daycare-cli 0.0.10 → 0.0.12

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 (225) hide show
  1. package/dist/commands/channelAddMember.d.ts +2 -0
  2. package/dist/commands/channelAddMember.d.ts.map +1 -0
  3. package/dist/commands/channelAddMember.js +20 -0
  4. package/dist/commands/channelAddMember.js.map +1 -0
  5. package/dist/commands/channelCommands.spec.d.ts +2 -0
  6. package/dist/commands/channelCommands.spec.d.ts.map +1 -0
  7. package/dist/commands/channelCommands.spec.js +95 -0
  8. package/dist/commands/channelCommands.spec.js.map +1 -0
  9. package/dist/commands/channelCreate.d.ts +4 -0
  10. package/dist/commands/channelCreate.d.ts.map +1 -0
  11. package/dist/commands/channelCreate.js +20 -0
  12. package/dist/commands/channelCreate.js.map +1 -0
  13. package/dist/commands/channelList.d.ts +2 -0
  14. package/dist/commands/channelList.d.ts.map +1 -0
  15. package/dist/commands/channelList.js +28 -0
  16. package/dist/commands/channelList.js.map +1 -0
  17. package/dist/commands/channelRemoveMember.d.ts +2 -0
  18. package/dist/commands/channelRemoveMember.d.ts.map +1 -0
  19. package/dist/commands/channelRemoveMember.js +24 -0
  20. package/dist/commands/channelRemoveMember.js.map +1 -0
  21. package/dist/commands/channelSend.d.ts +2 -0
  22. package/dist/commands/channelSend.d.ts.map +1 -0
  23. package/dist/commands/channelSend.js +20 -0
  24. package/dist/commands/channelSend.js.map +1 -0
  25. package/dist/engine/agents/agent.d.ts +0 -1
  26. package/dist/engine/agents/agent.d.ts.map +1 -1
  27. package/dist/engine/agents/agent.js +27 -77
  28. package/dist/engine/agents/agent.js.map +1 -1
  29. package/dist/engine/agents/agentSystem.d.ts +9 -3
  30. package/dist/engine/agents/agentSystem.d.ts.map +1 -1
  31. package/dist/engine/agents/agentSystem.js +13 -8
  32. package/dist/engine/agents/agentSystem.js.map +1 -1
  33. package/dist/engine/agents/ops/agentDescriptorLabel.d.ts.map +1 -1
  34. package/dist/engine/agents/ops/agentDescriptorLabel.js +7 -1
  35. package/dist/engine/agents/ops/agentDescriptorLabel.js.map +1 -1
  36. package/dist/engine/agents/ops/agentDescriptorLabel.spec.js +2 -1
  37. package/dist/engine/agents/ops/agentDescriptorLabel.spec.js.map +1 -1
  38. package/dist/engine/agents/ops/agentDescriptorRead.d.ts.map +1 -1
  39. package/dist/engine/agents/ops/agentDescriptorRead.js +1 -0
  40. package/dist/engine/agents/ops/agentDescriptorRead.js.map +1 -1
  41. package/dist/engine/agents/ops/agentDescriptorTypes.d.ts +1 -0
  42. package/dist/engine/agents/ops/agentDescriptorTypes.d.ts.map +1 -1
  43. package/dist/engine/agents/ops/agentLoopRun.d.ts.map +1 -1
  44. package/dist/engine/agents/ops/agentLoopRun.js +2 -1
  45. package/dist/engine/agents/ops/agentLoopRun.js.map +1 -1
  46. package/dist/engine/agents/ops/agentPermanentList.d.ts.map +1 -1
  47. package/dist/engine/agents/ops/agentPermanentList.js +1 -0
  48. package/dist/engine/agents/ops/agentPermanentList.js.map +1 -1
  49. package/dist/engine/agents/ops/agentPromptFilesEnsure.d.ts +1 -1
  50. package/dist/engine/agents/ops/agentPromptFilesEnsure.d.ts.map +1 -1
  51. package/dist/engine/agents/ops/agentPromptFilesEnsure.js +2 -3
  52. package/dist/engine/agents/ops/agentPromptFilesEnsure.js.map +1 -1
  53. package/dist/engine/agents/ops/agentTypes.d.ts +1 -11
  54. package/dist/engine/agents/ops/agentTypes.d.ts.map +1 -1
  55. package/dist/engine/agents/system/_systemAgents.d.ts.map +1 -1
  56. package/dist/engine/agents/system/_systemAgents.js +5 -0
  57. package/dist/engine/agents/system/_systemAgents.js.map +1 -1
  58. package/dist/engine/agents/system/systemAgentPromptResolve.spec.js +6 -0
  59. package/dist/engine/agents/system/systemAgentPromptResolve.spec.js.map +1 -1
  60. package/dist/engine/channels/channelMessageBuild.d.ts +12 -0
  61. package/dist/engine/channels/channelMessageBuild.d.ts.map +1 -0
  62. package/dist/engine/channels/channelMessageBuild.js +92 -0
  63. package/dist/engine/channels/channelMessageBuild.js.map +1 -0
  64. package/dist/engine/channels/channelMessageBuild.spec.d.ts +2 -0
  65. package/dist/engine/channels/channelMessageBuild.spec.d.ts.map +1 -0
  66. package/dist/engine/channels/channelMessageBuild.spec.js +60 -0
  67. package/dist/engine/channels/channelMessageBuild.spec.js.map +1 -0
  68. package/dist/engine/channels/channelStore.d.ts +27 -0
  69. package/dist/engine/channels/channelStore.d.ts.map +1 -0
  70. package/dist/engine/channels/channelStore.js +147 -0
  71. package/dist/engine/channels/channelStore.js.map +1 -0
  72. package/dist/engine/channels/channelStore.spec.d.ts +2 -0
  73. package/dist/engine/channels/channelStore.spec.d.ts.map +1 -0
  74. package/dist/engine/channels/channelStore.spec.js +89 -0
  75. package/dist/engine/channels/channelStore.spec.js.map +1 -0
  76. package/dist/engine/channels/channelTypes.d.ts +31 -0
  77. package/dist/engine/channels/channelTypes.d.ts.map +1 -0
  78. package/dist/engine/channels/channelTypes.js +2 -0
  79. package/dist/engine/channels/channelTypes.js.map +1 -0
  80. package/dist/engine/channels/channels.d.ts +34 -0
  81. package/dist/engine/channels/channels.d.ts.map +1 -0
  82. package/dist/engine/channels/channels.js +269 -0
  83. package/dist/engine/channels/channels.js.map +1 -0
  84. package/dist/engine/channels/channels.spec.d.ts +2 -0
  85. package/dist/engine/channels/channels.spec.d.ts.map +1 -0
  86. package/dist/engine/channels/channels.spec.js +132 -0
  87. package/dist/engine/channels/channels.spec.js.map +1 -0
  88. package/dist/engine/cron/crons.d.ts.map +1 -1
  89. package/dist/engine/cron/crons.js +26 -18
  90. package/dist/engine/cron/crons.js.map +1 -1
  91. package/dist/engine/engine.d.ts +4 -0
  92. package/dist/engine/engine.d.ts.map +1 -1
  93. package/dist/engine/engine.js +35 -11
  94. package/dist/engine/engine.js.map +1 -1
  95. package/dist/engine/engine.spec.js +114 -0
  96. package/dist/engine/engine.spec.js.map +1 -1
  97. package/dist/engine/heartbeat/heartbeats.d.ts.map +1 -1
  98. package/dist/engine/heartbeat/heartbeats.js +18 -4
  99. package/dist/engine/heartbeat/heartbeats.js.map +1 -1
  100. package/dist/engine/ipc/client.d.ts +9 -1
  101. package/dist/engine/ipc/client.d.ts.map +1 -1
  102. package/dist/engine/ipc/client.js +84 -0
  103. package/dist/engine/ipc/client.js.map +1 -1
  104. package/dist/engine/ipc/server.d.ts.map +1 -1
  105. package/dist/engine/ipc/server.js +84 -0
  106. package/dist/engine/ipc/server.js.map +1 -1
  107. package/dist/engine/modules/connectors/types.d.ts +6 -4
  108. package/dist/engine/modules/connectors/types.d.ts.map +1 -1
  109. package/dist/engine/modules/tools/channelCreateTool.d.ts +4 -0
  110. package/dist/engine/modules/tools/channelCreateTool.d.ts.map +1 -0
  111. package/dist/engine/modules/tools/channelCreateTool.js +34 -0
  112. package/dist/engine/modules/tools/channelCreateTool.js.map +1 -0
  113. package/dist/engine/modules/tools/channelCreateTool.spec.d.ts +2 -0
  114. package/dist/engine/modules/tools/channelCreateTool.spec.d.ts.map +1 -0
  115. package/dist/engine/modules/tools/channelCreateTool.spec.js +41 -0
  116. package/dist/engine/modules/tools/channelCreateTool.spec.js.map +1 -0
  117. package/dist/engine/modules/tools/channelHistoryTool.d.ts +4 -0
  118. package/dist/engine/modules/tools/channelHistoryTool.d.ts.map +1 -0
  119. package/dist/engine/modules/tools/channelHistoryTool.js +37 -0
  120. package/dist/engine/modules/tools/channelHistoryTool.js.map +1 -0
  121. package/dist/engine/modules/tools/channelHistoryTool.spec.d.ts +2 -0
  122. package/dist/engine/modules/tools/channelHistoryTool.spec.d.ts.map +1 -0
  123. package/dist/engine/modules/tools/channelHistoryTool.spec.js +58 -0
  124. package/dist/engine/modules/tools/channelHistoryTool.spec.js.map +1 -0
  125. package/dist/engine/modules/tools/channelMemberTool.d.ts +5 -0
  126. package/dist/engine/modules/tools/channelMemberTool.d.ts.map +1 -0
  127. package/dist/engine/modules/tools/channelMemberTool.js +73 -0
  128. package/dist/engine/modules/tools/channelMemberTool.js.map +1 -0
  129. package/dist/engine/modules/tools/channelMemberTool.spec.d.ts +2 -0
  130. package/dist/engine/modules/tools/channelMemberTool.spec.d.ts.map +1 -0
  131. package/dist/engine/modules/tools/channelMemberTool.spec.js +56 -0
  132. package/dist/engine/modules/tools/channelMemberTool.spec.js.map +1 -0
  133. package/dist/engine/modules/tools/channelSendTool.d.ts +4 -0
  134. package/dist/engine/modules/tools/channelSendTool.d.ts.map +1 -0
  135. package/dist/engine/modules/tools/channelSendTool.js +63 -0
  136. package/dist/engine/modules/tools/channelSendTool.js.map +1 -0
  137. package/dist/engine/modules/tools/channelSendTool.spec.d.ts +2 -0
  138. package/dist/engine/modules/tools/channelSendTool.spec.d.ts.map +1 -0
  139. package/dist/engine/modules/tools/channelSendTool.spec.js +58 -0
  140. package/dist/engine/modules/tools/channelSendTool.spec.js.map +1 -0
  141. package/dist/engine/modules/tools/heartbeat.d.ts +0 -1
  142. package/dist/engine/modules/tools/heartbeat.d.ts.map +1 -1
  143. package/dist/engine/modules/tools/heartbeat.js +0 -37
  144. package/dist/engine/modules/tools/heartbeat.js.map +1 -1
  145. package/dist/engine/modules/tools/permanentAgentToolBuild.d.ts.map +1 -1
  146. package/dist/engine/modules/tools/permanentAgentToolBuild.js +10 -0
  147. package/dist/engine/modules/tools/permanentAgentToolBuild.js.map +1 -1
  148. package/dist/engine/modules/tools/permanentAgentToolBuild.spec.js +27 -0
  149. package/dist/engine/modules/tools/permanentAgentToolBuild.spec.js.map +1 -1
  150. package/dist/engine/modules/tools/permissionRequestRegistry.d.ts +13 -0
  151. package/dist/engine/modules/tools/permissionRequestRegistry.d.ts.map +1 -0
  152. package/dist/engine/modules/tools/permissionRequestRegistry.js +51 -0
  153. package/dist/engine/modules/tools/permissionRequestRegistry.js.map +1 -0
  154. package/dist/engine/modules/tools/permissionRequestRegistry.spec.d.ts +2 -0
  155. package/dist/engine/modules/tools/permissionRequestRegistry.spec.d.ts.map +1 -0
  156. package/dist/engine/modules/tools/permissionRequestRegistry.spec.js +47 -0
  157. package/dist/engine/modules/tools/permissionRequestRegistry.spec.js.map +1 -0
  158. package/dist/engine/modules/tools/permissions.d.ts.map +1 -1
  159. package/dist/engine/modules/tools/permissions.js +86 -16
  160. package/dist/engine/modules/tools/permissions.js.map +1 -1
  161. package/dist/engine/modules/tools/permissions.spec.d.ts +2 -0
  162. package/dist/engine/modules/tools/permissions.spec.d.ts.map +1 -0
  163. package/dist/engine/modules/tools/permissions.spec.js +244 -0
  164. package/dist/engine/modules/tools/permissions.spec.js.map +1 -0
  165. package/dist/engine/modules/tools/topologyToolBuild.d.ts +10 -0
  166. package/dist/engine/modules/tools/topologyToolBuild.d.ts.map +1 -0
  167. package/dist/engine/modules/tools/topologyToolBuild.js +157 -0
  168. package/dist/engine/modules/tools/topologyToolBuild.js.map +1 -0
  169. package/dist/engine/modules/tools/topologyToolBuild.spec.d.ts +2 -0
  170. package/dist/engine/modules/tools/topologyToolBuild.spec.d.ts.map +1 -0
  171. package/dist/engine/modules/tools/topologyToolBuild.spec.js +264 -0
  172. package/dist/engine/modules/tools/topologyToolBuild.spec.js.map +1 -0
  173. package/dist/engine/modules/tools/types.d.ts +2 -0
  174. package/dist/engine/modules/tools/types.d.ts.map +1 -1
  175. package/dist/engine/permissions/permissionApply.d.ts.map +1 -1
  176. package/dist/engine/permissions/permissionApply.js +3 -1
  177. package/dist/engine/permissions/permissionApply.js.map +1 -1
  178. package/dist/engine/permissions/permissionApply.spec.js +17 -14
  179. package/dist/engine/permissions/permissionApply.spec.js.map +1 -1
  180. package/dist/engine/permissions/permissionBuildCronSession.d.ts +7 -0
  181. package/dist/engine/permissions/permissionBuildCronSession.d.ts.map +1 -0
  182. package/dist/engine/permissions/permissionBuildCronSession.js +18 -0
  183. package/dist/engine/permissions/permissionBuildCronSession.js.map +1 -0
  184. package/dist/engine/permissions/permissionBuildCronSession.spec.d.ts +2 -0
  185. package/dist/engine/permissions/permissionBuildCronSession.spec.d.ts.map +1 -0
  186. package/dist/engine/permissions/permissionBuildCronSession.spec.js +27 -0
  187. package/dist/engine/permissions/permissionBuildCronSession.spec.js.map +1 -0
  188. package/dist/engine/permissions/permissionBuildDefault.d.ts.map +1 -1
  189. package/dist/engine/permissions/permissionBuildDefault.js +1 -2
  190. package/dist/engine/permissions/permissionBuildDefault.js.map +1 -1
  191. package/dist/engine/skills/skillListUser.d.ts +8 -0
  192. package/dist/engine/skills/skillListUser.d.ts.map +1 -0
  193. package/dist/engine/skills/skillListUser.js +31 -0
  194. package/dist/engine/skills/skillListUser.js.map +1 -0
  195. package/dist/engine/skills/skillListUser.spec.d.ts +2 -0
  196. package/dist/engine/skills/skillListUser.spec.d.ts.map +1 -0
  197. package/dist/engine/skills/skillListUser.spec.js +38 -0
  198. package/dist/engine/skills/skillListUser.spec.js.map +1 -0
  199. package/dist/engine/skills/skillResolve.js +3 -0
  200. package/dist/engine/skills/skillResolve.js.map +1 -1
  201. package/dist/engine/skills/skillTypes.d.ts +4 -1
  202. package/dist/engine/skills/skillTypes.d.ts.map +1 -1
  203. package/dist/main.js +35 -0
  204. package/dist/main.js.map +1 -1
  205. package/dist/paths.d.ts +1 -1
  206. package/dist/paths.d.ts.map +1 -1
  207. package/dist/paths.js +1 -1
  208. package/dist/paths.js.map +1 -1
  209. package/dist/plugins/telegram/connector.d.ts.map +1 -1
  210. package/dist/plugins/telegram/connector.js +6 -11
  211. package/dist/plugins/telegram/connector.js.map +1 -1
  212. package/dist/plugins/telegram/connector.spec.js +10 -2
  213. package/dist/plugins/telegram/connector.spec.js.map +1 -1
  214. package/dist/plugins/whatsapp/connector.d.ts.map +1 -1
  215. package/dist/plugins/whatsapp/connector.js +6 -10
  216. package/dist/plugins/whatsapp/connector.js.map +1 -1
  217. package/dist/prompts/ACTORS.md +12 -4
  218. package/dist/prompts/CRON.md +8 -0
  219. package/dist/prompts/MEMORY.md +0 -1
  220. package/dist/prompts/PERMISSIONS.md +5 -4
  221. package/dist/prompts/SYSTEM.md +33 -27
  222. package/dist/skills/skills/scheduling/SKILL.md +2 -2
  223. package/dist/types.d.ts +2 -1
  224. package/dist/types.d.ts.map +1 -1
  225. package/package.json +1 -1
@@ -0,0 +1,2 @@
1
+ export declare function channelAddMemberCommand(channelName: string, agentId: string, username: string): Promise<void>;
2
+ //# sourceMappingURL=channelAddMember.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"channelAddMember.d.ts","sourceRoot":"","sources":["../../sources/commands/channelAddMember.ts"],"names":[],"mappings":"AAEA,wBAAsB,uBAAuB,CAC3C,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,IAAI,CAAC,CAUf"}
@@ -0,0 +1,20 @@
1
+ import { addEngineChannelMember } from "../engine/ipc/client.js";
2
+ export async function channelAddMemberCommand(channelName, agentId, username) {
3
+ intro("daycare channel add-member");
4
+ try {
5
+ await addEngineChannelMember(channelName, agentId, username);
6
+ outro(`Added @${username} (${agentId}) to #${channelName}.`);
7
+ }
8
+ catch (error) {
9
+ const message = error instanceof Error ? error.message : String(error);
10
+ process.exitCode = 1;
11
+ console.error(`Failed to add channel member: ${message}`);
12
+ }
13
+ }
14
+ function intro(message) {
15
+ console.log(message);
16
+ }
17
+ function outro(message) {
18
+ console.log(message);
19
+ }
20
+ //# sourceMappingURL=channelAddMember.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"channelAddMember.js","sourceRoot":"","sources":["../../sources/commands/channelAddMember.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AAEjE,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,WAAmB,EACnB,OAAe,EACf,QAAgB;IAEhB,KAAK,CAAC,4BAA4B,CAAC,CAAC;IACpC,IAAI,CAAC;QACH,MAAM,sBAAsB,CAAC,WAAW,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;QAC7D,KAAK,CAAC,UAAU,QAAQ,KAAK,OAAO,SAAS,WAAW,GAAG,CAAC,CAAC;IAC/D,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvE,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACrB,OAAO,CAAC,KAAK,CAAC,iCAAiC,OAAO,EAAE,CAAC,CAAC;IAC5D,CAAC;AACH,CAAC;AAED,SAAS,KAAK,CAAC,OAAe;IAC5B,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AACvB,CAAC;AAED,SAAS,KAAK,CAAC,OAAe;IAC5B,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AACvB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=channelCommands.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"channelCommands.spec.d.ts","sourceRoot":"","sources":["../../sources/commands/channelCommands.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,95 @@
1
+ import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";
2
+ import { addEngineChannelMember, createEngineChannel, listEngineChannels, removeEngineChannelMember, sendEngineChannelMessage } from "../engine/ipc/client.js";
3
+ import { channelAddMemberCommand } from "./channelAddMember.js";
4
+ import { channelCreateCommand } from "./channelCreate.js";
5
+ import { channelListCommand } from "./channelList.js";
6
+ import { channelRemoveMemberCommand } from "./channelRemoveMember.js";
7
+ import { channelSendCommand } from "./channelSend.js";
8
+ vi.mock("../engine/ipc/client.js", () => ({
9
+ createEngineChannel: vi.fn(),
10
+ listEngineChannels: vi.fn(),
11
+ addEngineChannelMember: vi.fn(),
12
+ removeEngineChannelMember: vi.fn(),
13
+ sendEngineChannelMessage: vi.fn()
14
+ }));
15
+ describe("channel commands", () => {
16
+ const createEngineChannelMock = vi.mocked(createEngineChannel);
17
+ const listEngineChannelsMock = vi.mocked(listEngineChannels);
18
+ const addEngineChannelMemberMock = vi.mocked(addEngineChannelMember);
19
+ const removeEngineChannelMemberMock = vi.mocked(removeEngineChannelMember);
20
+ const sendEngineChannelMessageMock = vi.mocked(sendEngineChannelMessage);
21
+ beforeEach(() => {
22
+ createEngineChannelMock.mockReset();
23
+ listEngineChannelsMock.mockReset();
24
+ addEngineChannelMemberMock.mockReset();
25
+ removeEngineChannelMemberMock.mockReset();
26
+ sendEngineChannelMessageMock.mockReset();
27
+ process.exitCode = undefined;
28
+ vi.spyOn(console, "log").mockImplementation(() => undefined);
29
+ vi.spyOn(console, "error").mockImplementation(() => undefined);
30
+ });
31
+ afterEach(() => {
32
+ vi.restoreAllMocks();
33
+ });
34
+ it("creates channels with leader option", async () => {
35
+ createEngineChannelMock.mockResolvedValueOnce({
36
+ id: "ch-1",
37
+ name: "dev",
38
+ leader: "agent-leader",
39
+ members: [],
40
+ createdAt: 1,
41
+ updatedAt: 1
42
+ });
43
+ await channelCreateCommand("dev", { leader: "agent-leader" });
44
+ expect(createEngineChannelMock).toHaveBeenCalledWith("dev", "agent-leader");
45
+ expect(process.exitCode).toBeUndefined();
46
+ });
47
+ it("lists channels", async () => {
48
+ listEngineChannelsMock.mockResolvedValueOnce([
49
+ {
50
+ id: "ch-1",
51
+ name: "dev",
52
+ leader: "agent-leader",
53
+ members: [],
54
+ createdAt: 1,
55
+ updatedAt: 1
56
+ }
57
+ ]);
58
+ await channelListCommand();
59
+ expect(listEngineChannelsMock).toHaveBeenCalled();
60
+ expect(process.exitCode).toBeUndefined();
61
+ });
62
+ it("adds and removes channel members", async () => {
63
+ addEngineChannelMemberMock.mockResolvedValueOnce({
64
+ id: "ch-1",
65
+ name: "dev",
66
+ leader: "agent-leader",
67
+ members: [{ agentId: "agent-a", username: "alice", joinedAt: 1 }],
68
+ createdAt: 1,
69
+ updatedAt: 1
70
+ });
71
+ removeEngineChannelMemberMock.mockResolvedValueOnce(true);
72
+ await channelAddMemberCommand("dev", "agent-a", "alice");
73
+ await channelRemoveMemberCommand("dev", "agent-a");
74
+ expect(addEngineChannelMemberMock).toHaveBeenCalledWith("dev", "agent-a", "alice");
75
+ expect(removeEngineChannelMemberMock).toHaveBeenCalledWith("dev", "agent-a");
76
+ expect(process.exitCode).toBeUndefined();
77
+ });
78
+ it("sends a channel message from CLI sender identity", async () => {
79
+ sendEngineChannelMessageMock.mockResolvedValueOnce({
80
+ message: {
81
+ id: "m1",
82
+ channelName: "dev",
83
+ senderUsername: "daycare-cli",
84
+ text: "hello",
85
+ mentions: [],
86
+ createdAt: 1
87
+ },
88
+ deliveredAgentIds: ["agent-leader"]
89
+ });
90
+ await channelSendCommand("dev", "hello");
91
+ expect(sendEngineChannelMessageMock).toHaveBeenCalledWith("dev", "daycare-cli", "hello", []);
92
+ expect(process.exitCode).toBeUndefined();
93
+ });
94
+ });
95
+ //# sourceMappingURL=channelCommands.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"channelCommands.spec.js","sourceRoot":"","sources":["../../sources/commands/channelCommands.spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAEzE,OAAO,EACL,sBAAsB,EACtB,mBAAmB,EACnB,kBAAkB,EAClB,yBAAyB,EACzB,wBAAwB,EACzB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AACtE,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAEtD,EAAE,CAAC,IAAI,CAAC,yBAAyB,EAAE,GAAG,EAAE,CAAC,CAAC;IACxC,mBAAmB,EAAE,EAAE,CAAC,EAAE,EAAE;IAC5B,kBAAkB,EAAE,EAAE,CAAC,EAAE,EAAE;IAC3B,sBAAsB,EAAE,EAAE,CAAC,EAAE,EAAE;IAC/B,yBAAyB,EAAE,EAAE,CAAC,EAAE,EAAE;IAClC,wBAAwB,EAAE,EAAE,CAAC,EAAE,EAAE;CAClC,CAAC,CAAC,CAAC;AAEJ,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;IAChC,MAAM,uBAAuB,GAAG,EAAE,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;IAC/D,MAAM,sBAAsB,GAAG,EAAE,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;IAC7D,MAAM,0BAA0B,GAAG,EAAE,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAC;IACrE,MAAM,6BAA6B,GAAG,EAAE,CAAC,MAAM,CAAC,yBAAyB,CAAC,CAAC;IAC3E,MAAM,4BAA4B,GAAG,EAAE,CAAC,MAAM,CAAC,wBAAwB,CAAC,CAAC;IAEzE,UAAU,CAAC,GAAG,EAAE;QACd,uBAAuB,CAAC,SAAS,EAAE,CAAC;QACpC,sBAAsB,CAAC,SAAS,EAAE,CAAC;QACnC,0BAA0B,CAAC,SAAS,EAAE,CAAC;QACvC,6BAA6B,CAAC,SAAS,EAAE,CAAC;QAC1C,4BAA4B,CAAC,SAAS,EAAE,CAAC;QACzC,OAAO,CAAC,QAAQ,GAAG,SAAS,CAAC;QAC7B,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,kBAAkB,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QAC7D,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,kBAAkB,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;IACjE,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACb,EAAE,CAAC,eAAe,EAAE,CAAC;IACvB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qCAAqC,EAAE,KAAK,IAAI,EAAE;QACnD,uBAAuB,CAAC,qBAAqB,CAAC;YAC5C,EAAE,EAAE,MAAM;YACV,IAAI,EAAE,KAAK;YACX,MAAM,EAAE,cAAc;YACtB,OAAO,EAAE,EAAE;YACX,SAAS,EAAE,CAAC;YACZ,SAAS,EAAE,CAAC;SACb,CAAC,CAAC;QAEH,MAAM,oBAAoB,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC,CAAC;QAE9D,MAAM,CAAC,uBAAuB,CAAC,CAAC,oBAAoB,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC;QAC5E,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,aAAa,EAAE,CAAC;IAC3C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gBAAgB,EAAE,KAAK,IAAI,EAAE;QAC9B,sBAAsB,CAAC,qBAAqB,CAAC;YAC3C;gBACE,EAAE,EAAE,MAAM;gBACV,IAAI,EAAE,KAAK;gBACX,MAAM,EAAE,cAAc;gBACtB,OAAO,EAAE,EAAE;gBACX,SAAS,EAAE,CAAC;gBACZ,SAAS,EAAE,CAAC;aACb;SACF,CAAC,CAAC;QAEH,MAAM,kBAAkB,EAAE,CAAC;QAE3B,MAAM,CAAC,sBAAsB,CAAC,CAAC,gBAAgB,EAAE,CAAC;QAClD,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,aAAa,EAAE,CAAC;IAC3C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kCAAkC,EAAE,KAAK,IAAI,EAAE;QAChD,0BAA0B,CAAC,qBAAqB,CAAC;YAC/C,EAAE,EAAE,MAAM;YACV,IAAI,EAAE,KAAK;YACX,MAAM,EAAE,cAAc;YACtB,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;YACjE,SAAS,EAAE,CAAC;YACZ,SAAS,EAAE,CAAC;SACb,CAAC,CAAC;QACH,6BAA6B,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC;QAE1D,MAAM,uBAAuB,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;QACzD,MAAM,0BAA0B,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;QAEnD,MAAM,CAAC,0BAA0B,CAAC,CAAC,oBAAoB,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;QACnF,MAAM,CAAC,6BAA6B,CAAC,CAAC,oBAAoB,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;QAC7E,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,aAAa,EAAE,CAAC;IAC3C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kDAAkD,EAAE,KAAK,IAAI,EAAE;QAChE,4BAA4B,CAAC,qBAAqB,CAAC;YACjD,OAAO,EAAE;gBACP,EAAE,EAAE,IAAI;gBACR,WAAW,EAAE,KAAK;gBAClB,cAAc,EAAE,aAAa;gBAC7B,IAAI,EAAE,OAAO;gBACb,QAAQ,EAAE,EAAE;gBACZ,SAAS,EAAE,CAAC;aACb;YACD,iBAAiB,EAAE,CAAC,cAAc,CAAC;SACpC,CAAC,CAAC;QAEH,MAAM,kBAAkB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAEzC,MAAM,CAAC,4BAA4B,CAAC,CAAC,oBAAoB,CACvD,KAAK,EACL,aAAa,EACb,OAAO,EACP,EAAE,CACH,CAAC;QACF,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,aAAa,EAAE,CAAC;IAC3C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,4 @@
1
+ export declare function channelCreateCommand(name: string, options: {
2
+ leader: string;
3
+ }): Promise<void>;
4
+ //# sourceMappingURL=channelCreate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"channelCreate.d.ts","sourceRoot":"","sources":["../../sources/commands/channelCreate.ts"],"names":[],"mappings":"AAEA,wBAAsB,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAUnG"}
@@ -0,0 +1,20 @@
1
+ import { createEngineChannel } from "../engine/ipc/client.js";
2
+ export async function channelCreateCommand(name, options) {
3
+ intro("daycare channel create");
4
+ try {
5
+ const channel = await createEngineChannel(name, options.leader);
6
+ outro(`Created #${channel.name} (leader=${channel.leader}).`);
7
+ }
8
+ catch (error) {
9
+ const message = error instanceof Error ? error.message : String(error);
10
+ process.exitCode = 1;
11
+ console.error(`Failed to create channel: ${message}`);
12
+ }
13
+ }
14
+ function intro(message) {
15
+ console.log(message);
16
+ }
17
+ function outro(message) {
18
+ console.log(message);
19
+ }
20
+ //# sourceMappingURL=channelCreate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"channelCreate.js","sourceRoot":"","sources":["../../sources/commands/channelCreate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAE9D,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,IAAY,EAAE,OAA2B;IAClF,KAAK,CAAC,wBAAwB,CAAC,CAAC;IAChC,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,mBAAmB,CAAC,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;QAChE,KAAK,CAAC,YAAY,OAAO,CAAC,IAAI,YAAY,OAAO,CAAC,MAAM,IAAI,CAAC,CAAC;IAChE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvE,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACrB,OAAO,CAAC,KAAK,CAAC,6BAA6B,OAAO,EAAE,CAAC,CAAC;IACxD,CAAC;AACH,CAAC;AAED,SAAS,KAAK,CAAC,OAAe;IAC5B,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AACvB,CAAC;AAED,SAAS,KAAK,CAAC,OAAe;IAC5B,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AACvB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function channelListCommand(): Promise<void>;
2
+ //# sourceMappingURL=channelList.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"channelList.d.ts","sourceRoot":"","sources":["../../sources/commands/channelList.ts"],"names":[],"mappings":"AAEA,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC,CAkBxD"}
@@ -0,0 +1,28 @@
1
+ import { listEngineChannels } from "../engine/ipc/client.js";
2
+ export async function channelListCommand() {
3
+ intro("daycare channel list");
4
+ try {
5
+ const channels = await listEngineChannels();
6
+ if (channels.length === 0) {
7
+ outro("No channels.");
8
+ return;
9
+ }
10
+ for (const channel of channels) {
11
+ const members = channel.members.length;
12
+ console.log(`#${channel.name} leader=${channel.leader} members=${members}`);
13
+ }
14
+ outro(`Listed ${channels.length} channel(s).`);
15
+ }
16
+ catch (error) {
17
+ const message = error instanceof Error ? error.message : String(error);
18
+ process.exitCode = 1;
19
+ console.error(`Failed to list channels: ${message}`);
20
+ }
21
+ }
22
+ function intro(message) {
23
+ console.log(message);
24
+ }
25
+ function outro(message) {
26
+ console.log(message);
27
+ }
28
+ //# sourceMappingURL=channelList.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"channelList.js","sourceRoot":"","sources":["../../sources/commands/channelList.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAE7D,MAAM,CAAC,KAAK,UAAU,kBAAkB;IACtC,KAAK,CAAC,sBAAsB,CAAC,CAAC;IAC9B,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,kBAAkB,EAAE,CAAC;QAC5C,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1B,KAAK,CAAC,cAAc,CAAC,CAAC;YACtB,OAAO;QACT,CAAC;QACD,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC;YACvC,OAAO,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,IAAI,WAAW,OAAO,CAAC,MAAM,YAAY,OAAO,EAAE,CAAC,CAAC;QAC9E,CAAC;QACD,KAAK,CAAC,UAAU,QAAQ,CAAC,MAAM,cAAc,CAAC,CAAC;IACjD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvE,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACrB,OAAO,CAAC,KAAK,CAAC,4BAA4B,OAAO,EAAE,CAAC,CAAC;IACvD,CAAC;AACH,CAAC;AAED,SAAS,KAAK,CAAC,OAAe;IAC5B,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AACvB,CAAC;AAED,SAAS,KAAK,CAAC,OAAe;IAC5B,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AACvB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function channelRemoveMemberCommand(channelName: string, agentId: string): Promise<void>;
2
+ //# sourceMappingURL=channelRemoveMember.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"channelRemoveMember.d.ts","sourceRoot":"","sources":["../../sources/commands/channelRemoveMember.ts"],"names":[],"mappings":"AAEA,wBAAsB,0BAA0B,CAC9C,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,IAAI,CAAC,CAcf"}
@@ -0,0 +1,24 @@
1
+ import { removeEngineChannelMember } from "../engine/ipc/client.js";
2
+ export async function channelRemoveMemberCommand(channelName, agentId) {
3
+ intro("daycare channel remove-member");
4
+ try {
5
+ const removed = await removeEngineChannelMember(channelName, agentId);
6
+ if (removed) {
7
+ outro(`Removed ${agentId} from #${channelName}.`);
8
+ return;
9
+ }
10
+ outro(`${agentId} is not a member of #${channelName}.`);
11
+ }
12
+ catch (error) {
13
+ const message = error instanceof Error ? error.message : String(error);
14
+ process.exitCode = 1;
15
+ console.error(`Failed to remove channel member: ${message}`);
16
+ }
17
+ }
18
+ function intro(message) {
19
+ console.log(message);
20
+ }
21
+ function outro(message) {
22
+ console.log(message);
23
+ }
24
+ //# sourceMappingURL=channelRemoveMember.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"channelRemoveMember.js","sourceRoot":"","sources":["../../sources/commands/channelRemoveMember.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AAEpE,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAC9C,WAAmB,EACnB,OAAe;IAEf,KAAK,CAAC,+BAA+B,CAAC,CAAC;IACvC,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,yBAAyB,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QACtE,IAAI,OAAO,EAAE,CAAC;YACZ,KAAK,CAAC,WAAW,OAAO,UAAU,WAAW,GAAG,CAAC,CAAC;YAClD,OAAO;QACT,CAAC;QACD,KAAK,CAAC,GAAG,OAAO,wBAAwB,WAAW,GAAG,CAAC,CAAC;IAC1D,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvE,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACrB,OAAO,CAAC,KAAK,CAAC,oCAAoC,OAAO,EAAE,CAAC,CAAC;IAC/D,CAAC;AACH,CAAC;AAED,SAAS,KAAK,CAAC,OAAe;IAC5B,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AACvB,CAAC;AAED,SAAS,KAAK,CAAC,OAAe;IAC5B,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AACvB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function channelSendCommand(channelName: string, text: string): Promise<void>;
2
+ //# sourceMappingURL=channelSend.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"channelSend.d.ts","sourceRoot":"","sources":["../../sources/commands/channelSend.ts"],"names":[],"mappings":"AAEA,wBAAsB,kBAAkB,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAYzF"}
@@ -0,0 +1,20 @@
1
+ import { sendEngineChannelMessage } from "../engine/ipc/client.js";
2
+ export async function channelSendCommand(channelName, text) {
3
+ intro("daycare channel send");
4
+ try {
5
+ const result = await sendEngineChannelMessage(channelName, "daycare-cli", text, []);
6
+ outro(`Sent message ${result.message.id} to #${channelName} (delivered=${result.deliveredAgentIds.length}).`);
7
+ }
8
+ catch (error) {
9
+ const message = error instanceof Error ? error.message : String(error);
10
+ process.exitCode = 1;
11
+ console.error(`Failed to send channel message: ${message}`);
12
+ }
13
+ }
14
+ function intro(message) {
15
+ console.log(message);
16
+ }
17
+ function outro(message) {
18
+ console.log(message);
19
+ }
20
+ //# sourceMappingURL=channelSend.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"channelSend.js","sourceRoot":"","sources":["../../sources/commands/channelSend.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AAEnE,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,WAAmB,EAAE,IAAY;IACxE,KAAK,CAAC,sBAAsB,CAAC,CAAC;IAC9B,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,wBAAwB,CAAC,WAAW,EAAE,aAAa,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;QACpF,KAAK,CACH,gBAAgB,MAAM,CAAC,OAAO,CAAC,EAAE,QAAQ,WAAW,eAAe,MAAM,CAAC,iBAAiB,CAAC,MAAM,IAAI,CACvG,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvE,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACrB,OAAO,CAAC,KAAK,CAAC,mCAAmC,OAAO,EAAE,CAAC,CAAC;IAC9D,CAAC;AACH,CAAC;AAED,SAAS,KAAK,CAAC,OAAe;IAC5B,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AACvB,CAAC;AAED,SAAS,KAAK,CAAC,OAAe;IAC5B,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AACvB,CAAC"}
@@ -48,7 +48,6 @@ export declare class Agent {
48
48
  */
49
49
  private handleEmergencyReset;
50
50
  private handleRestore;
51
- private handlePermission;
52
51
  /**
53
52
  * Notifies a parent agent when a subagent fails.
54
53
  * Expects: parent agent exists.
@@ -1 +1 @@
1
- {"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../../sources/engine/agents/agent.ts"],"names":[],"mappings":"AA8CA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,KAAK,EAWV,UAAU,EACX,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAQjD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAKpD,qBAAa,KAAK;IAChB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,UAAU,EAAE,eAAe,CAAC;IACrC,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC;IAC3B,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC;IAC3B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAc;IAC1C,OAAO,CAAC,UAAU,CAAuB;IACzC,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,wBAAwB,CAAgC;IAEhE,OAAO;IAcP;;;OAGG;WACU,MAAM,CACjB,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,eAAe,EAC3B,KAAK,EAAE,UAAU,EACjB,WAAW,EAAE,WAAW,GACvB,OAAO,CAAC,KAAK,CAAC;IA+BjB;;;OAGG;IACH,MAAM,CAAC,OAAO,CACZ,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,eAAe,EAC3B,KAAK,EAAE,UAAU,EACjB,KAAK,EAAE,UAAU,EACjB,WAAW,EAAE,WAAW,GACvB,KAAK;IAIR,KAAK,IAAI,IAAI;IAeb,YAAY,IAAI,OAAO;IAIvB;;;OAGG;IACH,cAAc,IAAI,OAAO;YASX,OAAO;IAwCrB;;;OAGG;YACW,cAAc;YAcd,eAAe;YAuCf,mBAAmB;YAsBnB,aAAa;YAwTb,mBAAmB;YAuCnB,YAAY;YAoBZ,WAAW;IA8CzB;;;OAGG;YACW,oBAAoB;YAmCpB,aAAa;YAeb,gBAAgB;IAqD9B;;;OAGG;IACG,qBAAqB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IA6B3E;;;OAGG;IACG,iBAAiB,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAUjD,OAAO,CAAC,gBAAgB;IAcxB,OAAO,CAAC,gBAAgB;IAOxB,OAAO,CAAC,oBAAoB;YAiBd,mBAAmB;IAiEjC;;;OAGG;YACW,iBAAiB;CAgHhC"}
1
+ {"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../../sources/engine/agents/agent.ts"],"names":[],"mappings":"AA0CA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,KAAK,EAUV,UAAU,EACX,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AASjD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAKpD,qBAAa,KAAK;IAChB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,UAAU,EAAE,eAAe,CAAC;IACrC,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC;IAC3B,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC;IAC3B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAc;IAC1C,OAAO,CAAC,UAAU,CAAuB;IACzC,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,wBAAwB,CAAgC;IAEhE,OAAO;IAcP;;;OAGG;WACU,MAAM,CACjB,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,eAAe,EAC3B,KAAK,EAAE,UAAU,EACjB,WAAW,EAAE,WAAW,GACvB,OAAO,CAAC,KAAK,CAAC;IA+BjB;;;OAGG;IACH,MAAM,CAAC,OAAO,CACZ,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,eAAe,EAC3B,KAAK,EAAE,UAAU,EACjB,KAAK,EAAE,UAAU,EACjB,WAAW,EAAE,WAAW,GACvB,KAAK;IAIR,KAAK,IAAI,IAAI;IAeb,YAAY,IAAI,OAAO;IAIvB;;;OAGG;IACH,cAAc,IAAI,OAAO;YASX,OAAO;IAwCrB;;;OAGG;YACW,cAAc;YAad,eAAe;YAkCf,mBAAmB;YAsBnB,aAAa;YAsTb,mBAAmB;YAuCnB,YAAY;YA4BZ,WAAW;IA8CzB;;;OAGG;YACW,oBAAoB;YAmCpB,aAAa;IAe3B;;;OAGG;IACG,qBAAqB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IA6B3E;;;OAGG;IACG,iBAAiB,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAUjD,OAAO,CAAC,gBAAgB;IAcxB,OAAO,CAAC,gBAAgB;IAOxB,OAAO,CAAC,oBAAoB;YAiBd,mBAAmB;IAiEjC;;;OAGG;YACW,iBAAiB;CA0GhC"}
@@ -4,7 +4,7 @@ import path from "node:path";
4
4
  import { createId } from "@paralleldrive/cuid2";
5
5
  import Handlebars from "handlebars";
6
6
  import { getLogger } from "../../log.js";
7
- import { DEFAULT_AGENTS_PATH, DEFAULT_ACTORS_PATH, DEFAULT_MEMORY_PATH, DEFAULT_SOUL_PATH, DEFAULT_TOOLS_PATH, DEFAULT_USER_PATH } from "../../paths.js";
7
+ import { DEFAULT_AGENTS_PATH, DEFAULT_MEMORY_PATH, DEFAULT_SOUL_PATH, DEFAULT_TOOLS_PATH, DEFAULT_USER_PATH } from "../../paths.js";
8
8
  import { listActiveInferenceProviders } from "../../providers/catalog.js";
9
9
  import { cuid2Is } from "../../utils/cuid2Is.js";
10
10
  import { agentPromptBundledRead } from "./ops/agentPromptBundledRead.js";
@@ -15,17 +15,14 @@ import { messageBuildSystemText } from "../messages/messageBuildSystemText.js";
15
15
  import { messageExtractText } from "../messages/messageExtractText.js";
16
16
  import { contextCompact } from "./ops/contextCompact.js";
17
17
  import { contextCompactionStatusBuild } from "./ops/contextCompactionStatusBuild.js";
18
- import { permissionBuildCron } from "../permissions/permissionBuildCron.js";
19
18
  import { permissionClone } from "../permissions/permissionClone.js";
20
19
  import { permissionEnsureDefaultFile } from "../permissions/permissionEnsureDefaultFile.js";
21
20
  import { permissionMergeDefault } from "../permissions/permissionMergeDefault.js";
22
- import { permissionApply } from "../permissions/permissionApply.js";
23
- import { permissionDescribeDecision } from "../permissions/permissionDescribeDecision.js";
24
- import { permissionFormatTag } from "../permissions/permissionFormatTag.js";
25
21
  import { permissionTagsApply } from "../permissions/permissionTagsApply.js";
26
22
  import { skillListConfig } from "../skills/skillListConfig.js";
27
23
  import { skillListCore } from "../skills/skillListCore.js";
28
24
  import { skillListRegistered } from "../skills/skillListRegistered.js";
25
+ import { skillListUser } from "../skills/skillListUser.js";
29
26
  import { skillPromptFormat } from "../skills/skillPromptFormat.js";
30
27
  import { toolListContextBuild } from "../modules/tools/toolListContextBuild.js";
31
28
  import { agentPermanentList } from "./ops/agentPermanentList.js";
@@ -41,6 +38,7 @@ import { agentDescriptorWrite } from "./ops/agentDescriptorWrite.js";
41
38
  import { agentSystemPromptWrite } from "./ops/agentSystemPromptWrite.js";
42
39
  import { agentRestoreContextResolve } from "./ops/agentRestoreContextResolve.js";
43
40
  import { signalMessageBuild } from "../signals/signalMessageBuild.js";
41
+ import { channelMessageBuild, channelSignalDataParse } from "../channels/channelMessageBuild.js";
44
42
  import { systemAgentPromptResolve } from "./system/systemAgentPromptResolve.js";
45
43
  const logger = getLogger("engine.agent");
46
44
  export class Agent {
@@ -170,7 +168,6 @@ export class Agent {
170
168
  item.type !== "system_message" &&
171
169
  item.type !== "signal" &&
172
170
  item.type !== "reset" &&
173
- item.type !== "permission" &&
174
171
  item.type !== "restore") {
175
172
  return;
176
173
  }
@@ -198,10 +195,6 @@ export class Agent {
198
195
  const ok = await this.handleRestore(item);
199
196
  return { type: "restore", ok };
200
197
  }
201
- case "permission": {
202
- const ok = await this.handlePermission(item);
203
- return { type: "permission", ok };
204
- }
205
198
  default:
206
199
  return { type: "restore", ok: false };
207
200
  }
@@ -275,12 +268,13 @@ export class Agent {
275
268
  const pluginPrompt = pluginPrompts.length > 0 ? pluginPrompts.join("\n\n") : "";
276
269
  const configSkillsRoot = path.join(this.agentSystem.config.current.configDir, "skills");
277
270
  logger.debug(`load: handleMessage loading available skills agentId=${this.id}`);
278
- const [coreSkills, configSkills, pluginSkills] = await Promise.all([
271
+ const [coreSkills, configSkills, userSkills, pluginSkills] = await Promise.all([
279
272
  skillListCore(),
280
273
  skillListConfig(configSkillsRoot),
274
+ skillListUser(),
281
275
  skillListRegistered(pluginManager.listRegisteredSkills())
282
276
  ]);
283
- const skills = [...coreSkills, ...configSkills, ...pluginSkills];
277
+ const skills = [...coreSkills, ...configSkills, ...userSkills, ...pluginSkills];
284
278
  const skillsPrompt = skillPromptFormat(skills);
285
279
  const permanentAgents = await agentPermanentList(this.agentSystem.config.current);
286
280
  const permanentAgentsPrompt = agentPermanentPromptBuild(permanentAgents);
@@ -296,10 +290,7 @@ export class Agent {
296
290
  const agentKind = this.resolveAgentKind();
297
291
  const allowCronTools = agentDescriptorIsCron(this.descriptor);
298
292
  const defaultPermissions = this.agentSystem.config.current.defaultPermissions;
299
- if (cronTask?.filesPath) {
300
- this.state.permissions = permissionBuildCron(defaultPermissions, cronTask.filesPath);
301
- }
302
- else if (agentDescriptorIsHeartbeat(this.descriptor)) {
293
+ if (agentDescriptorIsHeartbeat(this.descriptor)) {
303
294
  this.state.permissions = permissionMergeDefault(this.state.permissions, defaultPermissions);
304
295
  permissionEnsureDefaultFile(this.state.permissions, defaultPermissions);
305
296
  }
@@ -338,7 +329,6 @@ export class Agent {
338
329
  cronTaskIds: cronTaskIds.length > 0 ? cronTaskIds.join(", ") : "",
339
330
  soulPath: DEFAULT_SOUL_PATH,
340
331
  userPath: DEFAULT_USER_PATH,
341
- actorsPath: DEFAULT_ACTORS_PATH,
342
332
  agentsPath: DEFAULT_AGENTS_PATH,
343
333
  toolsPath: DEFAULT_TOOLS_PATH,
344
334
  memoryPath: DEFAULT_MEMORY_PATH,
@@ -545,18 +535,25 @@ export class Agent {
545
535
  return this.handleMessage(messageItem);
546
536
  }
547
537
  async handleSignal(item) {
548
- const subscription = this.agentSystem.signals.subscriptionGet({
549
- agentId: this.id,
550
- pattern: item.subscriptionPattern
551
- });
552
- if (!subscription) {
538
+ const isInternalSignal = item.subscriptionPattern.startsWith("internal.");
539
+ const subscription = isInternalSignal
540
+ ? null
541
+ : this.agentSystem.signals.subscriptionGet({
542
+ agentId: this.id,
543
+ pattern: item.subscriptionPattern
544
+ });
545
+ if (!isInternalSignal && !subscription) {
553
546
  return { delivered: false, responseText: null };
554
547
  }
548
+ const channelSignalData = channelSignalDataParse(item.signal.data);
549
+ const text = isChannelSignalType(item.signal.type) && channelSignalData
550
+ ? channelMessageBuild(channelSignalData)
551
+ : signalMessageBuild(item.signal);
555
552
  const responseText = await this.handleSystemMessage({
556
553
  type: "system_message",
557
- text: signalMessageBuild(item.signal),
554
+ text,
558
555
  origin: `signal:${item.signal.id}`,
559
- silent: subscription.silent,
556
+ silent: isInternalSignal ? false : (subscription?.silent ?? false),
560
557
  context: {}
561
558
  });
562
559
  return { delivered: true, responseText };
@@ -648,51 +645,6 @@ export class Agent {
648
645
  this.agentSystem.eventBus.emit("agent.restored", { agentId: this.id });
649
646
  return true;
650
647
  }
651
- async handlePermission(item) {
652
- const context = item.context;
653
- const decision = item.decision;
654
- const target = agentDescriptorTargetResolve(this.descriptor);
655
- const source = target?.connector ?? this.descriptor.type;
656
- const connector = target
657
- ? this.agentSystem.connectorRegistry.get(target.connector)
658
- : null;
659
- const permissionTag = permissionFormatTag(decision.access);
660
- const permissionLabel = permissionDescribeDecision(decision.access);
661
- if (!decision.approved) {
662
- logger.info({ source, permission: permissionTag, agentId: this.id }, "event: Permission denied");
663
- }
664
- if (decision.approved && (decision.access.kind === "read" || decision.access.kind === "write")) {
665
- if (!path.isAbsolute(decision.access.path)) {
666
- logger.warn({ agentId: this.id, permission: permissionTag }, "event: Permission path not absolute");
667
- if (connector && target) {
668
- await connector.sendMessage(target.targetId, {
669
- text: `Permission ignored (path must be absolute): ${permissionLabel}.`,
670
- replyToMessageId: context.messageId
671
- });
672
- }
673
- return false;
674
- }
675
- }
676
- if (decision.approved) {
677
- permissionApply(this.state.permissions, decision);
678
- await agentStateWrite(this.agentSystem.config.current, this.id, this.state);
679
- this.agentSystem.eventBus.emit("permission.granted", {
680
- agentId: this.id,
681
- source,
682
- decision
683
- });
684
- }
685
- const resumeText = decision.approved
686
- ? `Permission granted for ${permissionLabel}. Please continue with the previous request.`
687
- : `Permission denied for ${permissionLabel}. Please continue without that permission.`;
688
- const resumeMessage = {
689
- type: "message",
690
- message: { text: resumeText, rawText: resumeText },
691
- context: { ...context }
692
- };
693
- await this.handleMessage(resumeMessage);
694
- return true;
695
- }
696
648
  /**
697
649
  * Notifies a parent agent when a subagent fails.
698
650
  * Expects: parent agent exists.
@@ -832,7 +784,6 @@ export class Agent {
832
784
  }
833
785
  const soulPath = context.soulPath ?? DEFAULT_SOUL_PATH;
834
786
  const userPath = context.userPath ?? DEFAULT_USER_PATH;
835
- const actorsPath = context.actorsPath ?? DEFAULT_ACTORS_PATH;
836
787
  const agentsPath = context.agentsPath ?? DEFAULT_AGENTS_PATH;
837
788
  const toolsPath = context.toolsPath ?? DEFAULT_TOOLS_PATH;
838
789
  const memoryPath = context.memoryPath ?? DEFAULT_MEMORY_PATH;
@@ -840,8 +791,6 @@ export class Agent {
840
791
  const soul = await promptFileRead(soulPath, "SOUL.md");
841
792
  logger.debug(`event: buildSystemPrompt reading user prompt path=${userPath}`);
842
793
  const user = await promptFileRead(userPath, "USER.md");
843
- logger.debug(`event: buildSystemPrompt reading actors prompt path=${actorsPath}`);
844
- const actors = await promptFileRead(actorsPath, "ACTORS.md");
845
794
  logger.debug(`event: buildSystemPrompt reading agents prompt path=${agentsPath}`);
846
795
  const agents = await promptFileRead(agentsPath, "AGENTS.md");
847
796
  logger.debug(`event: buildSystemPrompt reading tools prompt path=${toolsPath}`);
@@ -854,7 +803,7 @@ export class Agent {
854
803
  const permissionsTemplate = (await agentPromptBundledRead("PERMISSIONS.md")).trim();
855
804
  logger.debug("event: buildSystemPrompt reading agentic template");
856
805
  const agenticTemplate = (await agentPromptBundledRead("AGENTIC.md")).trim();
857
- const additionalWriteDirs = resolveAdditionalWriteDirs(context.writeDirs ?? [], context.workspace ?? "", soulPath, userPath, actorsPath, agentsPath, toolsPath, memoryPath);
806
+ const additionalWriteDirs = resolveAdditionalWriteDirs(context.writeDirs ?? [], context.workspace ?? "", soulPath, userPath, agentsPath, toolsPath, memoryPath);
858
807
  const isForeground = context.agentKind !== "background";
859
808
  const skillsPath = context.skillsPath ?? (context.configDir ? `${context.configDir}/skills` : "");
860
809
  // Build shared context for both permissions and main templates
@@ -880,7 +829,6 @@ export class Agent {
880
829
  cronTaskIds: context.cronTaskIds ?? "",
881
830
  soulPath,
882
831
  userPath,
883
- actorsPath,
884
832
  agentsPath,
885
833
  toolsPath,
886
834
  memoryPath,
@@ -892,7 +840,6 @@ export class Agent {
892
840
  isForeground,
893
841
  soul,
894
842
  user,
895
- actors,
896
843
  agents,
897
844
  tools,
898
845
  memory,
@@ -916,8 +863,11 @@ export class Agent {
916
863
  return rendered.trim();
917
864
  }
918
865
  }
919
- function resolveAdditionalWriteDirs(writeDirs, workspace, soulPath, userPath, actorsPath, agentsPath, toolsPath, memoryPath) {
920
- const excluded = new Set([workspace, soulPath, userPath, actorsPath, agentsPath, toolsPath, memoryPath]
866
+ function isChannelSignalType(type) {
867
+ return type.startsWith("channel.") && type.endsWith(":message");
868
+ }
869
+ function resolveAdditionalWriteDirs(writeDirs, workspace, soulPath, userPath, agentsPath, toolsPath, memoryPath) {
870
+ const excluded = new Set([workspace, soulPath, userPath, agentsPath, toolsPath, memoryPath]
921
871
  .filter((entry) => entry && entry.trim().length > 0)
922
872
  .map((entry) => path.resolve(entry)));
923
873
  const filtered = writeDirs