daycare-cli 0.0.31 → 0.0.32

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 (186) hide show
  1. package/dist/engine/agents/agent.d.ts +0 -5
  2. package/dist/engine/agents/agent.d.ts.map +1 -1
  3. package/dist/engine/agents/agent.js +29 -215
  4. package/dist/engine/agents/agent.js.map +1 -1
  5. package/dist/engine/agents/agentSystem.d.ts.map +1 -1
  6. package/dist/engine/agents/agentSystem.js +20 -31
  7. package/dist/engine/agents/agentSystem.js.map +1 -1
  8. package/dist/engine/agents/ops/agentDescriptorCacheKey.d.ts +7 -0
  9. package/dist/engine/agents/ops/agentDescriptorCacheKey.d.ts.map +1 -0
  10. package/dist/engine/agents/ops/agentDescriptorCacheKey.js +25 -0
  11. package/dist/engine/agents/ops/agentDescriptorCacheKey.js.map +1 -0
  12. package/dist/engine/agents/ops/agentDescriptorCacheKey.spec.d.ts +2 -0
  13. package/dist/engine/agents/ops/agentDescriptorCacheKey.spec.d.ts.map +1 -0
  14. package/dist/engine/agents/ops/agentDescriptorCacheKey.spec.js +38 -0
  15. package/dist/engine/agents/ops/agentDescriptorCacheKey.spec.js.map +1 -0
  16. package/dist/engine/agents/ops/agentDescriptorRead.js +2 -2
  17. package/dist/engine/agents/ops/agentDescriptorRead.js.map +1 -1
  18. package/dist/engine/agents/ops/agentDescriptorTypes.d.ts +4 -0
  19. package/dist/engine/agents/ops/agentDescriptorTypes.d.ts.map +1 -1
  20. package/dist/engine/agents/ops/agentDescriptorWrite.js +2 -2
  21. package/dist/engine/agents/ops/agentDescriptorWrite.js.map +1 -1
  22. package/dist/engine/agents/ops/agentHistoryAppend.js +2 -2
  23. package/dist/engine/agents/ops/agentHistoryAppend.js.map +1 -1
  24. package/dist/engine/agents/ops/agentHistoryContext.d.ts +8 -0
  25. package/dist/engine/agents/ops/agentHistoryContext.d.ts.map +1 -0
  26. package/dist/engine/agents/ops/agentHistoryContext.js +86 -0
  27. package/dist/engine/agents/ops/agentHistoryContext.js.map +1 -0
  28. package/dist/engine/agents/ops/agentHistoryContext.spec.d.ts +2 -0
  29. package/dist/engine/agents/ops/agentHistoryContext.spec.d.ts.map +1 -0
  30. package/dist/engine/agents/ops/agentHistoryContext.spec.js +80 -0
  31. package/dist/engine/agents/ops/agentHistoryContext.spec.js.map +1 -0
  32. package/dist/engine/agents/ops/agentHistoryPendingToolResults.d.ts +8 -0
  33. package/dist/engine/agents/ops/agentHistoryPendingToolResults.d.ts.map +1 -0
  34. package/dist/engine/agents/ops/agentHistoryPendingToolResults.js +60 -0
  35. package/dist/engine/agents/ops/agentHistoryPendingToolResults.js.map +1 -0
  36. package/dist/engine/agents/ops/agentHistoryPendingToolResults.spec.d.ts +2 -0
  37. package/dist/engine/agents/ops/agentHistoryPendingToolResults.spec.d.ts.map +1 -0
  38. package/dist/engine/agents/ops/agentHistoryPendingToolResults.spec.js +85 -0
  39. package/dist/engine/agents/ops/agentHistoryPendingToolResults.spec.js.map +1 -0
  40. package/dist/engine/agents/ops/agentHistoryRecordsLoad.js +2 -2
  41. package/dist/engine/agents/ops/agentHistoryRecordsLoad.js.map +1 -1
  42. package/dist/engine/agents/ops/agentHistorySummary.d.ts +20 -0
  43. package/dist/engine/agents/ops/agentHistorySummary.d.ts.map +1 -0
  44. package/dist/engine/agents/ops/agentHistorySummary.js +61 -0
  45. package/dist/engine/agents/ops/agentHistorySummary.js.map +1 -0
  46. package/dist/engine/agents/ops/agentHistorySummary.spec.d.ts +2 -0
  47. package/dist/engine/agents/ops/agentHistorySummary.spec.d.ts.map +1 -0
  48. package/dist/engine/agents/ops/agentHistorySummary.spec.js +76 -0
  49. package/dist/engine/agents/ops/agentHistorySummary.spec.js.map +1 -0
  50. package/dist/engine/agents/ops/agentLoopRun.d.ts.map +1 -1
  51. package/dist/engine/agents/ops/agentLoopRun.js +11 -6
  52. package/dist/engine/agents/ops/agentLoopRun.js.map +1 -1
  53. package/dist/engine/agents/ops/agentLoopRun.spec.js +24 -2
  54. package/dist/engine/agents/ops/agentLoopRun.spec.js.map +1 -1
  55. package/dist/engine/agents/ops/agentPath.d.ts +7 -0
  56. package/dist/engine/agents/ops/agentPath.d.ts.map +1 -0
  57. package/dist/engine/agents/ops/agentPath.js +9 -0
  58. package/dist/engine/agents/ops/agentPath.js.map +1 -0
  59. package/dist/engine/agents/ops/agentPermanentPrompt.d.ts +7 -0
  60. package/dist/engine/agents/ops/agentPermanentPrompt.d.ts.map +1 -0
  61. package/dist/engine/agents/ops/agentPermanentPrompt.js +42 -0
  62. package/dist/engine/agents/ops/agentPermanentPrompt.js.map +1 -0
  63. package/dist/engine/agents/ops/agentPermanentPrompt.spec.d.ts +2 -0
  64. package/dist/engine/agents/ops/agentPermanentPrompt.spec.d.ts.map +1 -0
  65. package/dist/engine/agents/ops/agentPermanentPrompt.spec.js +47 -0
  66. package/dist/engine/agents/ops/agentPermanentPrompt.spec.js.map +1 -0
  67. package/dist/engine/agents/ops/agentPromptFilesEnsure.d.ts +8 -1
  68. package/dist/engine/agents/ops/agentPromptFilesEnsure.d.ts.map +1 -1
  69. package/dist/engine/agents/ops/agentPromptFilesEnsure.js +12 -6
  70. package/dist/engine/agents/ops/agentPromptFilesEnsure.js.map +1 -1
  71. package/dist/engine/agents/ops/agentPromptPathsResolve.d.ts +7 -0
  72. package/dist/engine/agents/ops/agentPromptPathsResolve.d.ts.map +1 -0
  73. package/dist/engine/agents/ops/agentPromptPathsResolve.js +26 -0
  74. package/dist/engine/agents/ops/agentPromptPathsResolve.js.map +1 -0
  75. package/dist/engine/agents/ops/agentStateRead.js +2 -2
  76. package/dist/engine/agents/ops/agentStateRead.js.map +1 -1
  77. package/dist/engine/agents/ops/agentStateWrite.js +2 -2
  78. package/dist/engine/agents/ops/agentStateWrite.js.map +1 -1
  79. package/dist/engine/agents/ops/agentSystemPrompt.d.ts +8 -0
  80. package/dist/engine/agents/ops/agentSystemPrompt.d.ts.map +1 -0
  81. package/dist/engine/agents/ops/agentSystemPrompt.js +47 -0
  82. package/dist/engine/agents/ops/agentSystemPrompt.js.map +1 -0
  83. package/dist/engine/agents/ops/agentSystemPrompt.spec.d.ts +2 -0
  84. package/dist/engine/agents/ops/agentSystemPrompt.spec.d.ts.map +1 -0
  85. package/dist/engine/agents/ops/agentSystemPrompt.spec.js +167 -0
  86. package/dist/engine/agents/ops/agentSystemPrompt.spec.js.map +1 -0
  87. package/dist/engine/agents/ops/agentSystemPromptContext.d.ts +11 -0
  88. package/dist/engine/agents/ops/agentSystemPromptContext.d.ts.map +1 -0
  89. package/dist/engine/agents/ops/agentSystemPromptContext.js +2 -0
  90. package/dist/engine/agents/ops/agentSystemPromptContext.js.map +1 -0
  91. package/dist/engine/agents/ops/agentSystemPromptSectionAgentsTopologySignalsChannels.d.ts +7 -0
  92. package/dist/engine/agents/ops/agentSystemPromptSectionAgentsTopologySignalsChannels.d.ts.map +1 -0
  93. package/dist/engine/agents/ops/agentSystemPromptSectionAgentsTopologySignalsChannels.js +12 -0
  94. package/dist/engine/agents/ops/agentSystemPromptSectionAgentsTopologySignalsChannels.js.map +1 -0
  95. package/dist/engine/agents/ops/agentSystemPromptSectionAutonomousOperation.d.ts +7 -0
  96. package/dist/engine/agents/ops/agentSystemPromptSectionAutonomousOperation.d.ts.map +1 -0
  97. package/dist/engine/agents/ops/agentSystemPromptSectionAutonomousOperation.js +22 -0
  98. package/dist/engine/agents/ops/agentSystemPromptSectionAutonomousOperation.js.map +1 -0
  99. package/dist/engine/agents/ops/agentSystemPromptSectionEnvironment.d.ts +7 -0
  100. package/dist/engine/agents/ops/agentSystemPromptSectionEnvironment.d.ts.map +1 -0
  101. package/dist/engine/agents/ops/agentSystemPromptSectionEnvironment.js +24 -0
  102. package/dist/engine/agents/ops/agentSystemPromptSectionEnvironment.js.map +1 -0
  103. package/dist/engine/agents/ops/agentSystemPromptSectionFormatting.d.ts +7 -0
  104. package/dist/engine/agents/ops/agentSystemPromptSectionFormatting.d.ts.map +1 -0
  105. package/dist/engine/agents/ops/agentSystemPromptSectionFormatting.js +22 -0
  106. package/dist/engine/agents/ops/agentSystemPromptSectionFormatting.js.map +1 -0
  107. package/dist/engine/agents/ops/agentSystemPromptSectionMemory.d.ts +7 -0
  108. package/dist/engine/agents/ops/agentSystemPromptSectionMemory.d.ts.map +1 -0
  109. package/dist/engine/agents/ops/agentSystemPromptSectionMemory.js +78 -0
  110. package/dist/engine/agents/ops/agentSystemPromptSectionMemory.js.map +1 -0
  111. package/dist/engine/agents/ops/agentSystemPromptSectionPermissions.d.ts +7 -0
  112. package/dist/engine/agents/ops/agentSystemPromptSectionPermissions.d.ts.map +1 -0
  113. package/dist/engine/agents/ops/agentSystemPromptSectionPermissions.js +53 -0
  114. package/dist/engine/agents/ops/agentSystemPromptSectionPermissions.js.map +1 -0
  115. package/dist/engine/agents/ops/agentSystemPromptSectionPreamble.d.ts +7 -0
  116. package/dist/engine/agents/ops/agentSystemPromptSectionPreamble.d.ts.map +1 -0
  117. package/dist/engine/agents/ops/agentSystemPromptSectionPreamble.js +20 -0
  118. package/dist/engine/agents/ops/agentSystemPromptSectionPreamble.js.map +1 -0
  119. package/dist/engine/agents/ops/agentSystemPromptSectionSkills.d.ts +7 -0
  120. package/dist/engine/agents/ops/agentSystemPromptSectionSkills.d.ts.map +1 -0
  121. package/dist/engine/agents/ops/agentSystemPromptSectionSkills.js +32 -0
  122. package/dist/engine/agents/ops/agentSystemPromptSectionSkills.js.map +1 -0
  123. package/dist/engine/agents/ops/agentSystemPromptSectionToolCalling.d.ts +7 -0
  124. package/dist/engine/agents/ops/agentSystemPromptSectionToolCalling.d.ts.map +1 -0
  125. package/dist/engine/agents/ops/agentSystemPromptSectionToolCalling.js +18 -0
  126. package/dist/engine/agents/ops/agentSystemPromptSectionToolCalling.js.map +1 -0
  127. package/dist/engine/agents/ops/agentSystemPromptWrite.js +2 -2
  128. package/dist/engine/agents/ops/agentSystemPromptWrite.js.map +1 -1
  129. package/dist/engine/agents/ops/contextCompactionStatus.d.ts +20 -0
  130. package/dist/engine/agents/ops/contextCompactionStatus.d.ts.map +1 -0
  131. package/dist/engine/agents/ops/contextCompactionStatus.js +31 -0
  132. package/dist/engine/agents/ops/contextCompactionStatus.js.map +1 -0
  133. package/dist/engine/agents/ops/contextCompactionStatus.spec.d.ts +2 -0
  134. package/dist/engine/agents/ops/contextCompactionStatus.spec.d.ts.map +1 -0
  135. package/dist/engine/agents/ops/contextCompactionStatus.spec.js +37 -0
  136. package/dist/engine/agents/ops/contextCompactionStatus.spec.js.map +1 -0
  137. package/dist/engine/messages/incomingMessages.js +2 -15
  138. package/dist/engine/messages/incomingMessages.js.map +1 -1
  139. package/dist/engine/modules/rlm/rlmNoToolsPromptBuild.d.ts +1 -2
  140. package/dist/engine/modules/rlm/rlmNoToolsPromptBuild.d.ts.map +1 -1
  141. package/dist/engine/modules/rlm/rlmNoToolsPromptBuild.js +12 -40
  142. package/dist/engine/modules/rlm/rlmNoToolsPromptBuild.js.map +1 -1
  143. package/dist/engine/modules/rlm/rlmNoToolsPromptBuild.spec.js +5 -14
  144. package/dist/engine/modules/rlm/rlmNoToolsPromptBuild.spec.js.map +1 -1
  145. package/dist/engine/modules/rlm/rlmPromptSkills.spec.d.ts +2 -0
  146. package/dist/engine/modules/rlm/rlmPromptSkills.spec.d.ts.map +1 -0
  147. package/dist/engine/modules/rlm/rlmPromptSkills.spec.js +140 -0
  148. package/dist/engine/modules/rlm/rlmPromptSkills.spec.js.map +1 -0
  149. package/dist/engine/modules/rlm/rlmToolDescriptionBuild.d.ts +1 -2
  150. package/dist/engine/modules/rlm/rlmToolDescriptionBuild.d.ts.map +1 -1
  151. package/dist/engine/modules/rlm/rlmToolDescriptionBuild.js +12 -29
  152. package/dist/engine/modules/rlm/rlmToolDescriptionBuild.js.map +1 -1
  153. package/dist/engine/modules/rlm/rlmToolDescriptionBuild.spec.js +7 -22
  154. package/dist/engine/modules/rlm/rlmToolDescriptionBuild.spec.js.map +1 -1
  155. package/dist/engine/modules/tools/sessionHistoryToolBuild.js +2 -2
  156. package/dist/engine/modules/tools/sessionHistoryToolBuild.js.map +1 -1
  157. package/dist/engine/modules/tools/toolListContextBuild.d.ts +1 -2
  158. package/dist/engine/modules/tools/toolListContextBuild.d.ts.map +1 -1
  159. package/dist/engine/modules/tools/toolListContextBuild.js +3 -4
  160. package/dist/engine/modules/tools/toolListContextBuild.js.map +1 -1
  161. package/dist/engine/modules/tools/toolListContextBuild.spec.js +10 -12
  162. package/dist/engine/modules/tools/toolListContextBuild.spec.js.map +1 -1
  163. package/dist/engine/skills/skillPromptFormat.d.ts +1 -1
  164. package/dist/engine/skills/skillPromptFormat.d.ts.map +1 -1
  165. package/dist/engine/skills/skillPromptFormat.js +2 -18
  166. package/dist/engine/skills/skillPromptFormat.js.map +1 -1
  167. package/dist/engine/skills/skillPromptFormat.spec.js +2 -3
  168. package/dist/engine/skills/skillPromptFormat.spec.js.map +1 -1
  169. package/dist/plugins/database/__tests__/plugin.spec.js +6 -2
  170. package/dist/plugins/database/__tests__/plugin.spec.js.map +1 -1
  171. package/dist/plugins/monty-python/tool.spec.js +6 -2
  172. package/dist/plugins/monty-python/tool.spec.js.map +1 -1
  173. package/dist/plugins/shell/tool.spec.js +6 -2
  174. package/dist/plugins/shell/tool.spec.js.map +1 -1
  175. package/dist/prompts/SYSTEM.md +3 -279
  176. package/dist/prompts/SYSTEM_AGENCY.md +53 -0
  177. package/dist/prompts/SYSTEM_ENVIRONMENT.md +14 -0
  178. package/dist/prompts/SYSTEM_FORMATTING.md +15 -0
  179. package/dist/prompts/SYSTEM_MEMORY.md +30 -0
  180. package/dist/prompts/SYSTEM_PERMISSIONS.md +53 -0
  181. package/dist/prompts/SYSTEM_SKILLS.md +10 -0
  182. package/dist/prompts/SYSTEM_TOOLS.md +6 -0
  183. package/dist/prompts/SYSTEM_TOOLS_RLM.md +12 -0
  184. package/dist/prompts/SYSTEM_TOOLS_RLM_INLINE.md +22 -0
  185. package/dist/prompts/SYSTEM_TOPOLOGY.md +58 -0
  186. package/package.json +1 -1
@@ -0,0 +1,7 @@
1
+ import type { AgentSystemPromptContext } from "./agentSystemPromptContext.js";
2
+ /**
3
+ * Renders tool-calling guidance and concatenates optional no-tools enforcement text.
4
+ * Expects: context matches agentSystemPrompt input shape.
5
+ */
6
+ export declare function agentSystemPromptSectionToolCalling(context?: AgentSystemPromptContext): Promise<string>;
7
+ //# sourceMappingURL=agentSystemPromptSectionToolCalling.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agentSystemPromptSectionToolCalling.d.ts","sourceRoot":"","sources":["../../../../sources/engine/agents/ops/agentSystemPromptSectionToolCalling.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AAE9E;;;GAGG;AACH,wBAAsB,mCAAmC,CACvD,OAAO,GAAE,wBAA6B,GACrC,OAAO,CAAC,MAAM,CAAC,CAUjB"}
@@ -0,0 +1,18 @@
1
+ import Handlebars from "handlebars";
2
+ import { rlmNoToolsPromptBuild } from "../../modules/rlm/rlmNoToolsPromptBuild.js";
3
+ import { agentPromptBundledRead } from "./agentPromptBundledRead.js";
4
+ /**
5
+ * Renders tool-calling guidance and concatenates optional no-tools enforcement text.
6
+ * Expects: context matches agentSystemPrompt input shape.
7
+ */
8
+ export async function agentSystemPromptSectionToolCalling(context = {}) {
9
+ const config = context.agentSystem?.config?.current;
10
+ const availableTools = context.agentSystem?.toolResolver?.listTools() ?? [];
11
+ const noToolsPrompt = config?.features.noTools && availableTools.length > 0
12
+ ? await rlmNoToolsPromptBuild(availableTools)
13
+ : "";
14
+ const template = await agentPromptBundledRead("SYSTEM_TOOLS.md");
15
+ const section = Handlebars.compile(template)({}).trim();
16
+ return [section, noToolsPrompt.trim()].filter((part) => part.length > 0).join("\n\n").trim();
17
+ }
18
+ //# sourceMappingURL=agentSystemPromptSectionToolCalling.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agentSystemPromptSectionToolCalling.js","sourceRoot":"","sources":["../../../../sources/engine/agents/ops/agentSystemPromptSectionToolCalling.ts"],"names":[],"mappings":"AAAA,OAAO,UAAU,MAAM,YAAY,CAAC;AAEpC,OAAO,EAAE,qBAAqB,EAAE,MAAM,4CAA4C,CAAC;AACnF,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAGrE;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,mCAAmC,CACvD,UAAoC,EAAE;IAEtC,MAAM,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,CAAC;IACpD,MAAM,cAAc,GAAG,OAAO,CAAC,WAAW,EAAE,YAAY,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;IAC5E,MAAM,aAAa,GACjB,MAAM,EAAE,QAAQ,CAAC,OAAO,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC;QACnD,CAAC,CAAC,MAAM,qBAAqB,CAAC,cAAc,CAAC;QAC7C,CAAC,CAAC,EAAE,CAAC;IACT,MAAM,QAAQ,GAAG,MAAM,sBAAsB,CAAC,iBAAiB,CAAC,CAAC;IACjE,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACxD,OAAO,CAAC,OAAO,EAAE,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;AAC/F,CAAC"}
@@ -1,7 +1,7 @@
1
1
  import { promises as fs } from "node:fs";
2
2
  import path from "node:path";
3
3
  import { atomicWrite } from "../../../util/atomicWrite.js";
4
- import { agentPathBuild } from "./agentPathBuild.js";
4
+ import { agentPath } from "./agentPath.js";
5
5
  const systemPromptCache = new Map();
6
6
  /**
7
7
  * Writes the latest system prompt snapshot next to the session history.
@@ -11,7 +11,7 @@ export async function agentSystemPromptWrite(config, sessionId, prompt) {
11
11
  if (systemPromptCache.get(sessionId) === prompt) {
12
12
  return false;
13
13
  }
14
- const basePath = agentPathBuild(config, sessionId);
14
+ const basePath = agentPath(config, sessionId);
15
15
  await fs.mkdir(basePath, { recursive: true });
16
16
  const filePath = path.join(basePath, "SYSTEM.md");
17
17
  const payload = prompt.endsWith("\n") ? prompt : `${prompt}\n`;
@@ -1 +1 @@
1
- {"version":3,"file":"agentSystemPromptWrite.js","sourceRoot":"","sources":["../../../../sources/engine/agents/ops/agentSystemPromptWrite.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,IAAI,MAAM,WAAW,CAAC;AAG7B,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD,MAAM,iBAAiB,GAAG,IAAI,GAAG,EAAkB,CAAC;AAEpD;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,MAAc,EACd,SAAiB,EACjB,MAAc;IAEd,IAAI,iBAAiB,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,MAAM,EAAE,CAAC;QAChD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,QAAQ,GAAG,cAAc,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACnD,MAAM,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9C,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;IAClD,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,CAAC;IAC/D,MAAM,WAAW,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACrC,iBAAiB,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IACzC,OAAO,IAAI,CAAC;AACd,CAAC"}
1
+ {"version":3,"file":"agentSystemPromptWrite.js","sourceRoot":"","sources":["../../../../sources/engine/agents/ops/agentSystemPromptWrite.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,IAAI,MAAM,WAAW,CAAC;AAG7B,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C,MAAM,iBAAiB,GAAG,IAAI,GAAG,EAAkB,CAAC;AAEpD;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,MAAc,EACd,SAAiB,EACjB,MAAc;IAEd,IAAI,iBAAiB,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,MAAM,EAAE,CAAC;QAChD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,QAAQ,GAAG,SAAS,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAC9C,MAAM,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9C,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;IAClD,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,CAAC;IAC/D,MAAM,WAAW,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACrC,iBAAiB,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IACzC,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -0,0 +1,20 @@
1
+ import type { AgentHistoryRecord } from "./agentTypes.js";
2
+ import { type ContextEstimateTokensExtras } from "./contextEstimateTokensWithExtras.js";
3
+ export type ContextCompactionStatus = {
4
+ estimatedTokens: number;
5
+ extraTokens: number;
6
+ emergencyLimit: number;
7
+ warningLimit: number;
8
+ criticalLimit: number;
9
+ utilization: number;
10
+ severity: "ok" | "warning" | "critical";
11
+ };
12
+ export type ContextCompactionStatusOptions = {
13
+ extras?: ContextEstimateTokensExtras;
14
+ };
15
+ /**
16
+ * Evaluates compaction pressure against the emergency context limit.
17
+ * Expects: emergencyLimit is a positive integer.
18
+ */
19
+ export declare function contextCompactionStatus(history: AgentHistoryRecord[], emergencyLimit: number, options?: ContextCompactionStatusOptions): ContextCompactionStatus;
20
+ //# sourceMappingURL=contextCompactionStatus.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contextCompactionStatus.d.ts","sourceRoot":"","sources":["../../../../sources/engine/agents/ops/contextCompactionStatus.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAE1D,OAAO,EAEL,KAAK,2BAA2B,EACjC,MAAM,sCAAsC,CAAC;AAK9C,MAAM,MAAM,uBAAuB,GAAG;IACpC,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,IAAI,GAAG,SAAS,GAAG,UAAU,CAAC;CACzC,CAAC;AAEF,MAAM,MAAM,8BAA8B,GAAG;IAC3C,MAAM,CAAC,EAAE,2BAA2B,CAAC;CACtC,CAAC;AAEF;;;GAGG;AACH,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,kBAAkB,EAAE,EAC7B,cAAc,EAAE,MAAM,EACtB,OAAO,GAAE,8BAAmC,GAC3C,uBAAuB,CAuBzB"}
@@ -0,0 +1,31 @@
1
+ import { contextEstimateTokens } from "./contextEstimateTokens.js";
2
+ import { contextEstimateTokensWithExtras } from "./contextEstimateTokensWithExtras.js";
3
+ const WARNING_RATIO = 0.75;
4
+ const CRITICAL_RATIO = 0.9;
5
+ /**
6
+ * Evaluates compaction pressure against the emergency context limit.
7
+ * Expects: emergencyLimit is a positive integer.
8
+ */
9
+ export function contextCompactionStatus(history, emergencyLimit, options = {}) {
10
+ const baseTokens = contextEstimateTokens(history);
11
+ const estimatedTokens = contextEstimateTokensWithExtras(history, options.extras);
12
+ const extraTokens = Math.max(0, estimatedTokens - baseTokens);
13
+ const warningLimit = Math.max(1, Math.floor(emergencyLimit * WARNING_RATIO));
14
+ const criticalLimit = Math.max(warningLimit + 1, Math.floor(emergencyLimit * CRITICAL_RATIO));
15
+ const utilization = emergencyLimit > 0 ? Math.min(1, estimatedTokens / emergencyLimit) : 0;
16
+ const severity = estimatedTokens >= criticalLimit
17
+ ? "critical"
18
+ : estimatedTokens >= warningLimit
19
+ ? "warning"
20
+ : "ok";
21
+ return {
22
+ estimatedTokens,
23
+ extraTokens,
24
+ emergencyLimit,
25
+ warningLimit,
26
+ criticalLimit,
27
+ utilization,
28
+ severity
29
+ };
30
+ }
31
+ //# sourceMappingURL=contextCompactionStatus.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contextCompactionStatus.js","sourceRoot":"","sources":["../../../../sources/engine/agents/ops/contextCompactionStatus.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EACL,+BAA+B,EAEhC,MAAM,sCAAsC,CAAC;AAE9C,MAAM,aAAa,GAAG,IAAI,CAAC;AAC3B,MAAM,cAAc,GAAG,GAAG,CAAC;AAgB3B;;;GAGG;AACH,MAAM,UAAU,uBAAuB,CACrC,OAA6B,EAC7B,cAAsB,EACtB,UAA0C,EAAE;IAE5C,MAAM,UAAU,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAC;IAClD,MAAM,eAAe,GAAG,+BAA+B,CAAC,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IACjF,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,eAAe,GAAG,UAAU,CAAC,CAAC;IAC9D,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,cAAc,GAAG,aAAa,CAAC,CAAC,CAAC;IAC7E,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,GAAG,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,cAAc,GAAG,cAAc,CAAC,CAAC,CAAC;IAC9F,MAAM,WAAW,GAAG,cAAc,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,eAAe,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3F,MAAM,QAAQ,GACZ,eAAe,IAAI,aAAa;QAC9B,CAAC,CAAC,UAAU;QACZ,CAAC,CAAC,eAAe,IAAI,YAAY;YAC/B,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,IAAI,CAAC;IAEb,OAAO;QACL,eAAe;QACf,WAAW;QACX,cAAc;QACd,YAAY;QACZ,aAAa;QACb,WAAW;QACX,QAAQ;KACT,CAAC;AACJ,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=contextCompactionStatus.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contextCompactionStatus.spec.d.ts","sourceRoot":"","sources":["../../../../sources/engine/agents/ops/contextCompactionStatus.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,37 @@
1
+ import { describe, it, expect } from "vitest";
2
+ import { contextCompactionStatus } from "./contextCompactionStatus.js";
3
+ function buildHistory(textLength) {
4
+ return [
5
+ {
6
+ type: "user_message",
7
+ at: 1,
8
+ text: "x".repeat(textLength),
9
+ files: []
10
+ }
11
+ ];
12
+ }
13
+ describe("contextCompactionStatus", () => {
14
+ it("returns ok when under warning threshold", () => {
15
+ const history = buildHistory(200); // 50 tokens
16
+ const status = contextCompactionStatus(history, 100);
17
+ expect(status.estimatedTokens).toBe(50);
18
+ expect(status.severity).toBe("ok");
19
+ });
20
+ it("returns warning and critical at thresholds", () => {
21
+ const warningHistory = buildHistory(300); // 75 tokens
22
+ const warningStatus = contextCompactionStatus(warningHistory, 100);
23
+ expect(warningStatus.severity).toBe("warning");
24
+ const criticalHistory = buildHistory(360); // 90 tokens
25
+ const criticalStatus = contextCompactionStatus(criticalHistory, 100);
26
+ expect(criticalStatus.severity).toBe("critical");
27
+ });
28
+ it("includes heuristic extras in the estimate", () => {
29
+ const history = buildHistory(0);
30
+ const status = contextCompactionStatus(history, 100, {
31
+ extras: { systemPrompt: "x".repeat(48) }
32
+ });
33
+ expect(status.estimatedTokens).toBe(12);
34
+ expect(status.extraTokens).toBe(12);
35
+ });
36
+ });
37
+ //# sourceMappingURL=contextCompactionStatus.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contextCompactionStatus.spec.js","sourceRoot":"","sources":["../../../../sources/engine/agents/ops/contextCompactionStatus.spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAE9C,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAGvE,SAAS,YAAY,CAAC,UAAkB;IACtC,OAAO;QACL;YACE,IAAI,EAAE,cAAc;YACpB,EAAE,EAAE,CAAC;YACL,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC;YAC5B,KAAK,EAAE,EAAE;SACV;KACF,CAAC;AACJ,CAAC;AAED,QAAQ,CAAC,yBAAyB,EAAE,GAAG,EAAE;IACvC,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;QACjD,MAAM,OAAO,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,YAAY;QAC/C,MAAM,MAAM,GAAG,uBAAuB,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QACrD,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACxC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4CAA4C,EAAE,GAAG,EAAE;QACpD,MAAM,cAAc,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,YAAY;QACtD,MAAM,aAAa,GAAG,uBAAuB,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC;QACnE,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAE/C,MAAM,eAAe,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,YAAY;QACvD,MAAM,cAAc,GAAG,uBAAuB,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC;QACrE,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;QACnD,MAAM,OAAO,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;QAChC,MAAM,MAAM,GAAG,uBAAuB,CAAC,OAAO,EAAE,GAAG,EAAE;YACnD,MAAM,EAAE,EAAE,YAAY,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE;SACzC,CAAC,CAAC;QACH,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACxC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACtC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,4 +1,4 @@
1
- import { agentPathForDescriptor } from "../agents/ops/agentPathForDescriptor.js";
1
+ import { agentDescriptorCacheKey } from "../agents/ops/agentDescriptorCacheKey.js";
2
2
  /**
3
3
  * Debounces and coalesces connector messages before agent dispatch.
4
4
  * Expects: callers post connector-originated message items only.
@@ -92,20 +92,7 @@ function batchBuild(inputs) {
92
92
  .filter((item) => !!item);
93
93
  }
94
94
  function batchKeyBuild(descriptor) {
95
- const path = agentPathForDescriptor(descriptor);
96
- if (path) {
97
- return path;
98
- }
99
- if (descriptor.type === "subagent") {
100
- return `/subagent/${descriptor.id}`;
101
- }
102
- if (descriptor.type === "app") {
103
- return `/app/${descriptor.id}`;
104
- }
105
- if (descriptor.type === "permanent") {
106
- return `/permanent/${descriptor.id}`;
107
- }
108
- return JSON.stringify(descriptor);
95
+ return agentDescriptorCacheKey(descriptor);
109
96
  }
110
97
  function connectorMessageMerge(left, right) {
111
98
  const files = [...(left.files ?? []), ...(right.files ?? [])];
@@ -1 +1 @@
1
- {"version":3,"file":"incomingMessages.js","sourceRoot":"","sources":["../../../sources/engine/messages/incomingMessages.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"incomingMessages.js","sourceRoot":"","sources":["../../../sources/engine/messages/incomingMessages.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,7 @@
1
1
  import type { Tool } from "@mariozechner/pi-ai";
2
- import type { AgentSkill } from "@/types";
3
2
  /**
4
3
  * Builds no-tools RLM instructions for the system prompt using <run_python> tags.
5
4
  * Expects: tools contains the full runtime tool list used for Monty dispatch.
6
5
  */
7
- export declare function rlmNoToolsPromptBuild(tools: Tool[], skills?: AgentSkill[]): string;
6
+ export declare function rlmNoToolsPromptBuild(tools: Tool[]): Promise<string>;
8
7
  //# sourceMappingURL=rlmNoToolsPromptBuild.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"rlmNoToolsPromptBuild.d.ts","sourceRoot":"","sources":["../../../../sources/engine/modules/rlm/rlmNoToolsPromptBuild.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAI1C;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,MAAM,GAAE,UAAU,EAAO,GAAG,MAAM,CA4BtF"}
1
+ {"version":3,"file":"rlmNoToolsPromptBuild.d.ts","sourceRoot":"","sources":["../../../../sources/engine/modules/rlm/rlmNoToolsPromptBuild.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAahD;;;GAGG;AACH,wBAAsB,qBAAqB,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAI1E"}
@@ -1,50 +1,22 @@
1
+ import Handlebars from "handlebars";
2
+ import { agentPromptBundledRead } from "../../agents/ops/agentPromptBundledRead.js";
1
3
  import { rlmPreambleBuild } from "./rlmPreambleBuild.js";
4
+ let rlmNoToolsPromptTemplatePromise = null;
2
5
  /**
3
6
  * Builds no-tools RLM instructions for the system prompt using <run_python> tags.
4
7
  * Expects: tools contains the full runtime tool list used for Monty dispatch.
5
8
  */
6
- export function rlmNoToolsPromptBuild(tools, skills = []) {
9
+ export async function rlmNoToolsPromptBuild(tools) {
7
10
  const preamble = rlmPreambleBuild(tools);
8
- const skillsSection = rlmNoToolsSkillsSectionBuild(skills);
9
- return [
10
- "## Python Execution",
11
- "",
12
- "This mode exposes zero tools to the model.",
13
- "To execute Python, write code inside `<run_python>...</run_python>` tags.",
14
- "Emit at most one Python block per assistant response.",
15
- "The system executes everything between the first `<run_python>` and last `</run_python>`.",
16
- "If you include `<say>` in the same response, all `<say>` blocks must come before `<run_python>`.",
17
- "Do not place `<say>` blocks after `<run_python>` in the same response.",
18
- "No escaping is needed.",
19
- "",
20
- "Available functions:",
21
- "```python",
22
- preamble,
23
- "```",
24
- "",
25
- "Call functions directly (no `await`).",
26
- "Use `try/except ToolError` for tool failures.",
27
- ...skillsSection,
28
- "Use `print()` for debug output.",
29
- "The value of the final expression is returned.",
30
- "Put the value you want to return as the final expression line; do not use `print()` for the final return value.",
31
- "Execution results are sent back as user messages wrapped in `<python_result>...</python_result>`.",
32
- "After receiving `<python_result>`, you get another turn and can emit `<say>` based on those results."
33
- ].join("\n");
11
+ const template = await rlmNoToolsPromptTemplateCompile();
12
+ return template({ preamble }).trim();
34
13
  }
35
- function rlmNoToolsSkillsSectionBuild(skills) {
36
- if (skills.length === 0) {
37
- return [];
14
+ async function rlmNoToolsPromptTemplateCompile() {
15
+ if (rlmNoToolsPromptTemplatePromise) {
16
+ return rlmNoToolsPromptTemplatePromise;
38
17
  }
39
- const lines = [
40
- "",
41
- "Available skills (use the `skill(...)` function stub to load/run them):"
42
- ];
43
- for (const skill of skills) {
44
- const description = skill.description ?? "";
45
- const sandbox = skill.sandbox ? " sandbox=true" : "";
46
- lines.push(`- ${skill.name}${sandbox}${description ? ` - ${description}` : ""}`);
47
- }
48
- return lines;
18
+ rlmNoToolsPromptTemplatePromise = agentPromptBundledRead("SYSTEM_TOOLS_RLM_INLINE.md")
19
+ .then((source) => Handlebars.compile(source));
20
+ return rlmNoToolsPromptTemplatePromise;
49
21
  }
50
22
  //# sourceMappingURL=rlmNoToolsPromptBuild.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"rlmNoToolsPromptBuild.js","sourceRoot":"","sources":["../../../../sources/engine/modules/rlm/rlmNoToolsPromptBuild.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEzD;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CAAC,KAAa,EAAE,SAAuB,EAAE;IAC5E,MAAM,QAAQ,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;IACzC,MAAM,aAAa,GAAG,4BAA4B,CAAC,MAAM,CAAC,CAAC;IAC3D,OAAO;QACL,qBAAqB;QACrB,EAAE;QACF,4CAA4C;QAC5C,2EAA2E;QAC3E,uDAAuD;QACvD,2FAA2F;QAC3F,kGAAkG;QAClG,wEAAwE;QACxE,wBAAwB;QACxB,EAAE;QACF,sBAAsB;QACtB,WAAW;QACX,QAAQ;QACR,KAAK;QACL,EAAE;QACF,uCAAuC;QACvC,+CAA+C;QAC/C,GAAG,aAAa;QAChB,iCAAiC;QACjC,gDAAgD;QAChD,iHAAiH;QACjH,mGAAmG;QACnG,sGAAsG;KACvG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED,SAAS,4BAA4B,CAAC,MAAoB;IACxD,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"}
1
+ {"version":3,"file":"rlmNoToolsPromptBuild.js","sourceRoot":"","sources":["../../../../sources/engine/modules/rlm/rlmNoToolsPromptBuild.ts"],"names":[],"mappings":"AACA,OAAO,UAAU,MAAM,YAAY,CAAC;AAEpC,OAAO,EAAE,sBAAsB,EAAE,MAAM,4CAA4C,CAAC;AACpF,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAMzD,IAAI,+BAA+B,GAC6C,IAAI,CAAC;AAErF;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,KAAa;IACvD,MAAM,QAAQ,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;IACzC,MAAM,QAAQ,GAAG,MAAM,+BAA+B,EAAE,CAAC;IACzD,OAAO,QAAQ,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;AACvC,CAAC;AAED,KAAK,UAAU,+BAA+B;IAG5C,IAAI,+BAA+B,EAAE,CAAC;QACpC,OAAO,+BAA+B,CAAC;IACzC,CAAC;IACD,+BAA+B,GAAG,sBAAsB,CAAC,4BAA4B,CAAC;SACnF,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,CAAkC,MAAM,CAAC,CAAC,CAAC;IACjF,OAAO,+BAA+B,CAAC;AACzC,CAAC"}
@@ -1,23 +1,13 @@
1
1
  import { describe, expect, it } from "vitest";
2
2
  import { rlmNoToolsPromptBuild } from "./rlmNoToolsPromptBuild.js";
3
3
  describe("rlmNoToolsPromptBuild", () => {
4
- it("builds run_python tag instructions with generated stubs", () => {
4
+ it("renders no-tools run_python tag instructions with generated stubs", async () => {
5
5
  const tools = [
6
6
  { name: "run_python", description: "", parameters: {} },
7
7
  { name: "echo", description: "Echo text", parameters: {} },
8
8
  { name: "skill", description: "Load skill", parameters: {} }
9
9
  ];
10
- const skills = [
11
- {
12
- id: "core:scheduling",
13
- name: "scheduling",
14
- description: "Set up recurring tasks",
15
- source: "core",
16
- path: "/tmp/skills/scheduling/SKILL.md",
17
- sandbox: true
18
- }
19
- ];
20
- const prompt = rlmNoToolsPromptBuild(tools, skills);
10
+ const prompt = await rlmNoToolsPromptBuild(tools);
21
11
  expect(prompt).toContain("This mode exposes zero tools to the model.");
22
12
  expect(prompt).toContain("<run_python>...</run_python>");
23
13
  expect(prompt).toContain("Emit at most one Python block per assistant response.");
@@ -25,11 +15,12 @@ describe("rlmNoToolsPromptBuild", () => {
25
15
  expect(prompt).toContain("`<say>` blocks must come before `<run_python>`");
26
16
  expect(prompt).toContain("```python");
27
17
  expect(prompt).toContain("def echo() -> str:");
28
- expect(prompt).toContain("Available skills");
29
- expect(prompt).toContain("- scheduling sandbox=true - Set up recurring tasks");
18
+ expect(prompt).not.toContain("Available skills");
30
19
  expect(prompt).toContain("<python_result>...</python_result>");
31
20
  expect(prompt).toContain("do not use `print()` for the final return value");
32
21
  expect(prompt).toContain("you get another turn and can emit `<say>`");
22
+ expect(prompt.indexOf("Call functions directly (no `await`).")).toBeLessThan(prompt.indexOf("Available functions:"));
23
+ expect(prompt.match(/Use `try\/except ToolError` for tool failures\./g)?.length ?? 0).toBe(1);
33
24
  });
34
25
  });
35
26
  //# sourceMappingURL=rlmNoToolsPromptBuild.spec.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"rlmNoToolsPromptBuild.spec.js","sourceRoot":"","sources":["../../../../sources/engine/modules/rlm/rlmNoToolsPromptBuild.spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAI9C,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAEnE,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;IACrC,EAAE,CAAC,yDAAyD,EAAE,GAAG,EAAE;QACjE,MAAM,KAAK,GAAG;YACZ,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE;YACvD,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,UAAU,EAAE,EAAE,EAAE;YAC1D,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;SACF,CAAC;QAEF,MAAM,MAAM,GAAG,qBAAqB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAEpD,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,4CAA4C,CAAC,CAAC;QACvE,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,8BAA8B,CAAC,CAAC;QACzD,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,uDAAuD,CAAC,CAAC;QAClF,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,+CAA+C,CAAC,CAAC;QAC1E,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,gDAAgD,CAAC,CAAC;QAC3E,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;QACtC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,oBAAoB,CAAC,CAAC;QAC/C,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC;QAC7C,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,oDAAoD,CAAC,CAAC;QAC/E,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,oCAAoC,CAAC,CAAC;QAC/D,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,iDAAiD,CAAC,CAAC;QAC5E,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,2CAA2C,CAAC,CAAC;IACxE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"rlmNoToolsPromptBuild.spec.js","sourceRoot":"","sources":["../../../../sources/engine/modules/rlm/rlmNoToolsPromptBuild.spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAG9C,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAEnE,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;IACrC,EAAE,CAAC,mEAAmE,EAAE,KAAK,IAAI,EAAE;QACjF,MAAM,KAAK,GAAG;YACZ,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE;YACvD,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,UAAU,EAAE,EAAE,EAAE;YAC1D,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,UAAU,EAAE,EAAE,EAAE;SACxC,CAAC;QAEvB,MAAM,MAAM,GAAG,MAAM,qBAAqB,CAAC,KAAK,CAAC,CAAC;QAElD,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,4CAA4C,CAAC,CAAC;QACvE,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,8BAA8B,CAAC,CAAC;QACzD,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,uDAAuD,CAAC,CAAC;QAClF,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,+CAA+C,CAAC,CAAC;QAC1E,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,gDAAgD,CAAC,CAAC;QAC3E,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;QACtC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,oBAAoB,CAAC,CAAC;QAC/C,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC;QACjD,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,oCAAoC,CAAC,CAAC;QAC/D,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,iDAAiD,CAAC,CAAC;QAC5E,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,2CAA2C,CAAC,CAAC;QACtE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,uCAAuC,CAAC,CAAC,CAAC,YAAY,CAC1E,MAAM,CAAC,OAAO,CAAC,sBAAsB,CAAC,CACvC,CAAC;QACF,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,kDAAkD,CAAC,EAAE,MAAM,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAChG,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=rlmPromptSkills.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rlmPromptSkills.spec.d.ts","sourceRoot":"","sources":["../../../../sources/engine/modules/rlm/rlmPromptSkills.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,140 @@
1
+ import Handlebars from "handlebars";
2
+ import { describe, expect, it } from "vitest";
3
+ import { agentPromptBundledRead } from "../../agents/ops/agentPromptBundledRead.js";
4
+ import { skillPromptFormat } from "../../skills/skillPromptFormat.js";
5
+ import { rlmNoToolsPromptBuild } from "./rlmNoToolsPromptBuild.js";
6
+ import { rlmToolDescriptionBuild } from "./rlmToolDescriptionBuild.js";
7
+ const SECTION_SEPARATOR = "\n\n---\n\n";
8
+ const skills = [
9
+ {
10
+ id: "core:scheduling",
11
+ name: "scheduling",
12
+ description: "Set up recurring tasks",
13
+ source: "core",
14
+ path: "/tmp/skills/scheduling/SKILL.md",
15
+ sandbox: true
16
+ }
17
+ ];
18
+ const tools = [
19
+ { name: "run_python", description: "", parameters: {} },
20
+ { name: "echo", description: "Echo text", parameters: {} },
21
+ { name: "skill", description: "Load skill", parameters: {} }
22
+ ];
23
+ describe("system prompt skills rendering", () => {
24
+ it("includes the skill list once in classic mode", async () => {
25
+ const prompt = await renderSystemPrompt({
26
+ toolsText: "Tool notes",
27
+ skillsPrompt: skillPromptFormat(skills)
28
+ });
29
+ expect(occurrences(prompt, "<name>scheduling</name>")).toBe(1);
30
+ });
31
+ it("includes the skill list once in rlm mode", async () => {
32
+ const prompt = await renderSystemPrompt({
33
+ toolsText: await rlmToolDescriptionBuild(tools),
34
+ skillsPrompt: skillPromptFormat(skills)
35
+ });
36
+ expect(occurrences(prompt, "<name>scheduling</name>")).toBe(1);
37
+ });
38
+ it("includes the skill list once in no-tools mode", async () => {
39
+ const prompt = await renderSystemPrompt({
40
+ toolsText: "Tool notes",
41
+ skillsPrompt: skillPromptFormat(skills),
42
+ noToolsPrompt: await rlmNoToolsPromptBuild(tools),
43
+ featuresSay: true
44
+ });
45
+ expect(occurrences(prompt, "<name>scheduling</name>")).toBe(1);
46
+ });
47
+ it("shows static skills guidance for background agents", async () => {
48
+ const prompt = await renderSystemPrompt({
49
+ toolsText: "",
50
+ skillsPrompt: "",
51
+ isForeground: false
52
+ });
53
+ expect(prompt).toContain("## Skills (mandatory)");
54
+ expect(prompt).toContain("Before replying, scan the skill descriptions below:");
55
+ expect(prompt).not.toContain("For local skill authoring:");
56
+ });
57
+ });
58
+ async function renderSystemPrompt(options) {
59
+ const sectionContext = {
60
+ isForeground: options.isForeground ?? true,
61
+ date: "2026-02-17",
62
+ os: "Darwin 24.0.0",
63
+ arch: "arm64",
64
+ model: "test-model",
65
+ provider: "test-provider",
66
+ workspace: "/tmp/workspace",
67
+ network: false,
68
+ events: false,
69
+ connector: "test",
70
+ canSendFiles: false,
71
+ fileSendModes: "",
72
+ messageFormatPrompt: "",
73
+ channelId: "channel-1",
74
+ userId: "user-1",
75
+ cronTaskId: "",
76
+ cronTaskName: "",
77
+ cronMemoryPath: "",
78
+ cronFilesPath: "",
79
+ appFolderPath: "",
80
+ workspacePermissionGranted: false,
81
+ soulPath: "/tmp/SOUL.md",
82
+ userPath: "/tmp/USER.md",
83
+ agentsPath: "/tmp/AGENTS.md",
84
+ toolsPath: "/tmp/TOOLS.md",
85
+ memoryPath: "/tmp/MEMORY.md",
86
+ skillsPrompt: options.skillsPrompt,
87
+ parentAgentId: "",
88
+ configDir: "/tmp/.daycare",
89
+ skillsPath: "/tmp/.daycare/skills",
90
+ soul: "soul",
91
+ user: "user",
92
+ agents: "agents",
93
+ tools: options.toolsText,
94
+ memory: "memory",
95
+ additionalWriteDirs: [],
96
+ agentPrompt: "",
97
+ noToolsPrompt: options.noToolsPrompt ?? ""
98
+ };
99
+ const [preambleSection, autonomousOperationSection, permissionsSection, toolCallingSection, agentsTopologySignalsChannelsSection, skillsSection, formattingSection, memorySection, environmentSection] = await Promise.all([
100
+ sectionRender("SYSTEM.md", sectionContext),
101
+ sectionRender("SYSTEM_AGENCY.md", sectionContext),
102
+ sectionRender("SYSTEM_PERMISSIONS.md", sectionContext),
103
+ (async () => {
104
+ const base = await sectionRender("SYSTEM_TOOLS.md", sectionContext);
105
+ const noTools = (options.noToolsPrompt ?? "").trim();
106
+ return [base, noTools].filter((section) => section.length > 0).join("\n\n");
107
+ })(),
108
+ sectionRender("SYSTEM_TOPOLOGY.md", sectionContext),
109
+ (async () => {
110
+ const base = await sectionRender("SYSTEM_SKILLS.md", sectionContext);
111
+ const dynamicSkills = options.skillsPrompt.trim();
112
+ return [base, dynamicSkills].filter((section) => section.length > 0).join("\n\n");
113
+ })(),
114
+ sectionRender("SYSTEM_FORMATTING.md", sectionContext),
115
+ sectionRender("SYSTEM_MEMORY.md", sectionContext),
116
+ sectionRender("SYSTEM_ENVIRONMENT.md", sectionContext)
117
+ ]);
118
+ return [
119
+ preambleSection,
120
+ autonomousOperationSection,
121
+ permissionsSection,
122
+ toolCallingSection,
123
+ agentsTopologySignalsChannelsSection,
124
+ skillsSection,
125
+ formattingSection,
126
+ memorySection,
127
+ environmentSection
128
+ ]
129
+ .filter((section) => section.length > 0)
130
+ .join(SECTION_SEPARATOR)
131
+ .trim();
132
+ }
133
+ async function sectionRender(templateName, context) {
134
+ const source = await agentPromptBundledRead(templateName);
135
+ return Handlebars.compile(source)(context).trim();
136
+ }
137
+ function occurrences(haystack, needle) {
138
+ return haystack.split(needle).length - 1;
139
+ }
140
+ //# sourceMappingURL=rlmPromptSkills.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rlmPromptSkills.spec.js","sourceRoot":"","sources":["../../../../sources/engine/modules/rlm/rlmPromptSkills.spec.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,7 @@
1
1
  import type { Tool } from "@mariozechner/pi-ai";
2
- import type { AgentSkill } from "@/types";
3
2
  /**
4
3
  * Builds the run_python tool description with the generated Python tool preamble.
5
4
  * Expects: tools contains the full current tool list from ToolResolver.
6
5
  */
7
- export declare function rlmToolDescriptionBuild(tools: Tool[], skills?: AgentSkill[]): string;
6
+ export declare function rlmToolDescriptionBuild(tools: Tool[]): Promise<string>;
8
7
  //# sourceMappingURL=rlmToolDescriptionBuild.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"rlmToolDescriptionBuild.d.ts","sourceRoot":"","sources":["../../../../sources/engine/modules/rlm/rlmToolDescriptionBuild.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAI1C;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,MAAM,GAAE,UAAU,EAAO,GAAG,MAAM,CAiBxF"}
1
+ {"version":3,"file":"rlmToolDescriptionBuild.d.ts","sourceRoot":"","sources":["../../../../sources/engine/modules/rlm/rlmToolDescriptionBuild.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAahD;;;GAGG;AACH,wBAAsB,uBAAuB,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAI5E"}
@@ -1,39 +1,22 @@
1
+ import Handlebars from "handlebars";
2
+ import { agentPromptBundledRead } from "../../agents/ops/agentPromptBundledRead.js";
1
3
  import { rlmPreambleBuild } from "./rlmPreambleBuild.js";
4
+ let rlmToolDescriptionTemplatePromise = null;
2
5
  /**
3
6
  * Builds the run_python tool description with the generated Python tool preamble.
4
7
  * Expects: tools contains the full current tool list from ToolResolver.
5
8
  */
6
- export function rlmToolDescriptionBuild(tools, skills = []) {
9
+ export async function rlmToolDescriptionBuild(tools) {
7
10
  const preamble = rlmPreambleBuild(tools);
8
- const skillsSection = rlmSkillsSectionBuild(skills);
9
- return [
10
- "Execute Python code to complete the task.",
11
- "",
12
- "The following functions are available:",
13
- "```python",
14
- preamble,
15
- "```",
16
- "",
17
- "Call tool functions directly (no `await`).",
18
- "Use `try/except ToolError` for tool failures.",
19
- ...skillsSection,
20
- "Use `print()` for debug output.",
21
- "The value of the final expression is returned."
22
- ].join("\n");
11
+ const template = await rlmToolDescriptionTemplateCompile();
12
+ return template({ preamble }).trim();
23
13
  }
24
- function rlmSkillsSectionBuild(skills) {
25
- if (skills.length === 0) {
26
- return [];
14
+ async function rlmToolDescriptionTemplateCompile() {
15
+ if (rlmToolDescriptionTemplatePromise) {
16
+ return rlmToolDescriptionTemplatePromise;
27
17
  }
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;
18
+ rlmToolDescriptionTemplatePromise = agentPromptBundledRead("SYSTEM_TOOLS_RLM.md")
19
+ .then((source) => Handlebars.compile(source));
20
+ return rlmToolDescriptionTemplatePromise;
38
21
  }
39
22
  //# sourceMappingURL=rlmToolDescriptionBuild.js.map
@@ -1 +1 @@
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"}
1
+ {"version":3,"file":"rlmToolDescriptionBuild.js","sourceRoot":"","sources":["../../../../sources/engine/modules/rlm/rlmToolDescriptionBuild.ts"],"names":[],"mappings":"AACA,OAAO,UAAU,MAAM,YAAY,CAAC;AAEpC,OAAO,EAAE,sBAAsB,EAAE,MAAM,4CAA4C,CAAC;AACpF,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAMzD,IAAI,iCAAiC,GAC6C,IAAI,CAAC;AAEvF;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAAC,KAAa;IACzD,MAAM,QAAQ,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;IACzC,MAAM,QAAQ,GAAG,MAAM,iCAAiC,EAAE,CAAC;IAC3D,OAAO,QAAQ,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;AACvC,CAAC;AAED,KAAK,UAAU,iCAAiC;IAG9C,IAAI,iCAAiC,EAAE,CAAC;QACtC,OAAO,iCAAiC,CAAC;IAC3C,CAAC;IACD,iCAAiC,GAAG,sBAAsB,CAAC,qBAAqB,CAAC;SAC9E,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,CAAoC,MAAM,CAAC,CAAC,CAAC;IACnF,OAAO,iCAAiC,CAAC;AAC3C,CAAC"}