daycare-cli 0.0.1 → 0.0.4

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 (52) hide show
  1. package/dist/config/configResolve.js +2 -2
  2. package/dist/config/configResolve.js.map +1 -1
  3. package/dist/config/configResolve.spec.d.ts +2 -0
  4. package/dist/config/configResolve.spec.d.ts.map +1 -0
  5. package/dist/config/configResolve.spec.js +19 -0
  6. package/dist/config/configResolve.spec.js.map +1 -0
  7. package/dist/engine/messages/messageBuildUser.d.ts.map +1 -1
  8. package/dist/engine/messages/messageBuildUser.js +4 -15
  9. package/dist/engine/messages/messageBuildUser.js.map +1 -1
  10. package/dist/engine/messages/messageBuildUser.spec.js +3 -3
  11. package/dist/engine/messages/messageBuildUser.spec.js.map +1 -1
  12. package/dist/engine/modules/tools/image-generation.d.ts.map +1 -1
  13. package/dist/engine/modules/tools/image-generation.js +8 -10
  14. package/dist/engine/modules/tools/image-generation.js.map +1 -1
  15. package/dist/engine/modules/tools/image-generation.spec.d.ts +2 -0
  16. package/dist/engine/modules/tools/image-generation.spec.d.ts.map +1 -0
  17. package/dist/engine/modules/tools/image-generation.spec.js +71 -0
  18. package/dist/engine/modules/tools/image-generation.spec.js.map +1 -0
  19. package/dist/plugins/anthropic-fetch/plugin.json +6 -0
  20. package/dist/plugins/anthropic-search/plugin.json +6 -0
  21. package/dist/plugins/brave-search/plugin.json +6 -0
  22. package/dist/plugins/database/plugin.json +6 -0
  23. package/dist/plugins/exa-ai/plugin.json +6 -0
  24. package/dist/plugins/firecrawl/plugin.json +6 -0
  25. package/dist/plugins/gemini-search/plugin.json +6 -0
  26. package/dist/plugins/memory/plugin.json +6 -0
  27. package/dist/plugins/monty-python/plugin.json +6 -0
  28. package/dist/plugins/nano-banana-pro/plugin.json +6 -0
  29. package/dist/plugins/openai-search/plugin.json +6 -0
  30. package/dist/plugins/perplexity-search/plugin.json +6 -0
  31. package/dist/plugins/shell/plugin.json +6 -0
  32. package/dist/plugins/telegram/plugin.json +6 -0
  33. package/dist/plugins/web-fetch/plugin.json +6 -0
  34. package/dist/plugins/whatsapp/plugin.json +6 -0
  35. package/dist/prompts/SYSTEM.md +1 -0
  36. package/dist/release/releaseRun.d.ts +6 -0
  37. package/dist/release/releaseRun.d.ts.map +1 -0
  38. package/dist/release/releaseRun.js +90 -0
  39. package/dist/release/releaseRun.js.map +1 -0
  40. package/dist/release/releaseVersionIncrement.d.ts +8 -0
  41. package/dist/release/releaseVersionIncrement.d.ts.map +1 -0
  42. package/dist/release/releaseVersionIncrement.js +23 -0
  43. package/dist/release/releaseVersionIncrement.js.map +1 -0
  44. package/dist/release/releaseVersionIncrement.spec.d.ts +2 -0
  45. package/dist/release/releaseVersionIncrement.spec.d.ts.map +1 -0
  46. package/dist/release/releaseVersionIncrement.spec.js +20 -0
  47. package/dist/release/releaseVersionIncrement.spec.js.map +1 -0
  48. package/dist/release/releaseVersionPrompt.d.ts +6 -0
  49. package/dist/release/releaseVersionPrompt.d.ts.map +1 -0
  50. package/dist/release/releaseVersionPrompt.js +46 -0
  51. package/dist/release/releaseVersionPrompt.js.map +1 -0
  52. package/package.json +3 -2
@@ -13,11 +13,11 @@ export function configResolve(settings, settingsPath, overrides = {}) {
13
13
  const resolvedSettingsPath = path.resolve(settingsPath);
14
14
  const configDir = path.dirname(resolvedSettingsPath);
15
15
  const dataDir = path.resolve(resolvedSettings.engine?.dataDir ?? DEFAULT_DAYCARE_DIR);
16
+ const workspaceDir = resolveWorkspaceDir(configDir, resolvedSettings.assistant ?? null);
16
17
  const agentsDir = path.join(dataDir, "agents");
17
- const filesDir = path.join(dataDir, "files");
18
+ const filesDir = path.join(workspaceDir, "files");
18
19
  const authPath = path.join(dataDir, "auth.json");
19
20
  const socketPath = resolveEngineSocketPath(resolvedSettings.engine?.socketPath);
20
- const workspaceDir = resolveWorkspaceDir(configDir, resolvedSettings.assistant ?? null);
21
21
  const defaultPermissions = permissionBuildDefault(workspaceDir, configDir);
22
22
  const frozenSettings = freezeDeep(structuredClone(resolvedSettings));
23
23
  const frozenPermissions = freezeDeep(defaultPermissions);
@@ -1 +1 @@
1
- {"version":3,"file":"configResolve.js","sourceRoot":"","sources":["../../sources/config/configResolve.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,sBAAsB,EAAE,MAAM,iDAAiD,CAAC;AACzF,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAElD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAGnD;;;GAGG;AACH,MAAM,UAAU,aAAa,CAC3B,QAAwB,EACxB,YAAoB,EACpB,YAA6B,EAAE;IAE/B,MAAM,gBAAgB,GAAG,uBAAuB,CAAC,QAAQ,CAAC,CAAC;IAC3D,MAAM,oBAAoB,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IACxD,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC;IACrD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,MAAM,EAAE,OAAO,IAAI,mBAAmB,CAAC,CAAC;IACtF,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAC/C,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC7C,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;IACjD,MAAM,UAAU,GAAG,uBAAuB,CAAC,gBAAgB,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAChF,MAAM,YAAY,GAAG,mBAAmB,CAAC,SAAS,EAAE,gBAAgB,CAAC,SAAS,IAAI,IAAI,CAAC,CAAC;IACxF,MAAM,kBAAkB,GAAG,sBAAsB,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;IAC3E,MAAM,cAAc,GAAG,UAAU,CAAC,eAAe,CAAC,gBAAgB,CAAC,CAAC,CAAC;IACrE,MAAM,iBAAiB,GAAG,UAAU,CAAC,kBAAkB,CAAC,CAAC;IACzD,MAAM,OAAO,GAAG,SAAS,CAAC,OAAO,IAAI,KAAK,CAAC;IAE3C,OAAO,UAAU,CAAC;QAChB,YAAY,EAAE,oBAAoB;QAClC,SAAS;QACT,OAAO;QACP,SAAS;QACT,QAAQ;QACR,QAAQ;QACR,UAAU;QACV,YAAY;QACZ,QAAQ,EAAE,cAAc;QACxB,kBAAkB,EAAE,iBAAiB;QACrC,OAAO;KACR,CAAC,CAAC;AACL,CAAC;AAED,SAAS,uBAAuB,CAAC,QAAwB;IACvD,MAAM,qBAAqB,GACzB,QAAQ,CAAC,MAAM,EAAE,qBAAqB,IAAI,OAAO,CAAC;IACpD,OAAO;QACL,GAAG,QAAQ;QACX,MAAM,EAAE;YACN,GAAG,QAAQ,CAAC,MAAM;YAClB,qBAAqB;SACtB;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"configResolve.js","sourceRoot":"","sources":["../../sources/config/configResolve.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,sBAAsB,EAAE,MAAM,iDAAiD,CAAC;AACzF,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAElD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAGnD;;;GAGG;AACH,MAAM,UAAU,aAAa,CAC3B,QAAwB,EACxB,YAAoB,EACpB,YAA6B,EAAE;IAE/B,MAAM,gBAAgB,GAAG,uBAAuB,CAAC,QAAQ,CAAC,CAAC;IAC3D,MAAM,oBAAoB,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IACxD,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC;IACrD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,MAAM,EAAE,OAAO,IAAI,mBAAmB,CAAC,CAAC;IACtF,MAAM,YAAY,GAAG,mBAAmB,CAAC,SAAS,EAAE,gBAAgB,CAAC,SAAS,IAAI,IAAI,CAAC,CAAC;IACxF,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAC/C,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;IAClD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;IACjD,MAAM,UAAU,GAAG,uBAAuB,CAAC,gBAAgB,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAChF,MAAM,kBAAkB,GAAG,sBAAsB,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;IAC3E,MAAM,cAAc,GAAG,UAAU,CAAC,eAAe,CAAC,gBAAgB,CAAC,CAAC,CAAC;IACrE,MAAM,iBAAiB,GAAG,UAAU,CAAC,kBAAkB,CAAC,CAAC;IACzD,MAAM,OAAO,GAAG,SAAS,CAAC,OAAO,IAAI,KAAK,CAAC;IAE3C,OAAO,UAAU,CAAC;QAChB,YAAY,EAAE,oBAAoB;QAClC,SAAS;QACT,OAAO;QACP,SAAS;QACT,QAAQ;QACR,QAAQ;QACR,UAAU;QACV,YAAY;QACZ,QAAQ,EAAE,cAAc;QACxB,kBAAkB,EAAE,iBAAiB;QACrC,OAAO;KACR,CAAC,CAAC;AACL,CAAC;AAED,SAAS,uBAAuB,CAAC,QAAwB;IACvD,MAAM,qBAAqB,GACzB,QAAQ,CAAC,MAAM,EAAE,qBAAqB,IAAI,OAAO,CAAC;IACpD,OAAO;QACL,GAAG,QAAQ;QACX,MAAM,EAAE;YACN,GAAG,QAAQ,CAAC,MAAM;YAClB,qBAAqB;SACtB;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=configResolve.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"configResolve.spec.d.ts","sourceRoot":"","sources":["../../sources/config/configResolve.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,19 @@
1
+ import path from "node:path";
2
+ import { describe, expect, it } from "vitest";
3
+ import { configResolve } from "./configResolve.js";
4
+ describe("configResolve", () => {
5
+ it("resolves filesDir under workspace/files", () => {
6
+ const configPath = path.join("/tmp/daycare", "settings.json");
7
+ const config = configResolve({
8
+ assistant: {
9
+ workspaceDir: "/tmp/daycare/workspace"
10
+ },
11
+ engine: {
12
+ dataDir: "/tmp/daycare/.daycare"
13
+ }
14
+ }, configPath);
15
+ expect(config.workspaceDir).toBe(path.resolve("/tmp/daycare/workspace"));
16
+ expect(config.filesDir).toBe(path.resolve("/tmp/daycare/workspace/files"));
17
+ });
18
+ });
19
+ //# sourceMappingURL=configResolve.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"configResolve.spec.js","sourceRoot":"","sources":["../../sources/config/configResolve.spec.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAE9C,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;IAC7B,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;QACjD,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,eAAe,CAAC,CAAC;QAC9D,MAAM,MAAM,GAAG,aAAa,CAC1B;YACE,SAAS,EAAE;gBACT,YAAY,EAAE,wBAAwB;aACvC;YACD,MAAM,EAAE;gBACN,OAAO,EAAE,uBAAuB;aACjC;SACF,EACD,UAAU,CACX,CAAC;QAEF,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,wBAAwB,CAAC,CAAC,CAAC;QACzE,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,8BAA8B,CAAC,CAAC,CAAC;IAC7E,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"messageBuildUser.d.ts","sourceRoot":"","sources":["../../../sources/engine/messages/messageBuildUser.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAEnD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAEhE,wBAAsB,gBAAgB,CACpC,KAAK,EAAE,YAAY,GAClB,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC,CAuCtC"}
1
+ {"version":3,"file":"messageBuildUser.d.ts","sourceRoot":"","sources":["../../../sources/engine/messages/messageBuildUser.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAEnD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAEhE,wBAAsB,gBAAgB,CACpC,KAAK,EAAE,YAAY,GAClB,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC,CA4BtC"}
@@ -1,4 +1,3 @@
1
- import { promises as fs } from "node:fs";
2
1
  export async function messageBuildUser(entry) {
3
2
  const text = entry.message.text ?? "";
4
3
  const files = entry.message.files ?? [];
@@ -14,20 +13,10 @@ export async function messageBuildUser(entry) {
14
13
  content.push({ type: "text", text });
15
14
  }
16
15
  for (const file of files) {
17
- if (file.mimeType.startsWith("image/")) {
18
- const data = await fs.readFile(file.path);
19
- content.push({
20
- type: "image",
21
- data: data.toString("base64"),
22
- mimeType: file.mimeType
23
- });
24
- }
25
- else {
26
- content.push({
27
- type: "text",
28
- text: `File received: ${file.name} (${file.mimeType}, ${file.size} bytes)`
29
- });
30
- }
16
+ content.push({
17
+ type: "text",
18
+ text: `File received: ${file.name} (${file.mimeType}, ${file.size} bytes) at ${file.path}`
19
+ });
31
20
  }
32
21
  return {
33
22
  role: "user",
@@ -1 +1 @@
1
- {"version":3,"file":"messageBuildUser.js","sourceRoot":"","sources":["../../../sources/engine/messages/messageBuildUser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,SAAS,CAAC;AAMzC,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,KAAmB;IAEnB,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC;IACtC,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC;IACxC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO;YACL,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE,IAAI;YACb,SAAS,EAAE,KAAK,CAAC,UAAU;SAC5B,CAAC;IACJ,CAAC;IAED,MAAM,OAAO,GAET,EAAE,CAAC;IACP,IAAI,IAAI,EAAE,CAAC;QACT,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;IACvC,CAAC;IAED,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YACvC,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC1C,OAAO,CAAC,IAAI,CAAC;gBACX,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;gBAC7B,QAAQ,EAAE,IAAI,CAAC,QAAQ;aACxB,CAAC,CAAC;QACL,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,IAAI,CAAC;gBACX,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,kBAAkB,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,IAAI,SAAS;aAC3E,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO;QACL,IAAI,EAAE,MAAM;QACZ,OAAO;QACP,SAAS,EAAE,KAAK,CAAC,UAAU;KAC5B,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"messageBuildUser.js","sourceRoot":"","sources":["../../../sources/engine/messages/messageBuildUser.ts"],"names":[],"mappings":"AAIA,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,KAAmB;IAEnB,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC;IACtC,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC;IACxC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO;YACL,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE,IAAI;YACb,SAAS,EAAE,KAAK,CAAC,UAAU;SAC5B,CAAC;IACJ,CAAC;IAED,MAAM,OAAO,GAA0C,EAAE,CAAC;IAC1D,IAAI,IAAI,EAAE,CAAC;QACT,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;IACvC,CAAC;IAED,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,OAAO,CAAC,IAAI,CAAC;YACX,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,kBAAkB,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,IAAI,cAAc,IAAI,CAAC,IAAI,EAAE;SAC3F,CAAC,CAAC;IACL,CAAC;IAED,OAAO;QACL,IAAI,EAAE,MAAM;QACZ,OAAO;QACP,SAAS,EAAE,KAAK,CAAC,UAAU;KAC5B,CAAC;AACJ,CAAC"}
@@ -17,7 +17,7 @@ describe("messageBuildUser", () => {
17
17
  expect(result.content).toBe("hello");
18
18
  expect(typeof result.timestamp).toBe("number");
19
19
  });
20
- it("embeds image files as base64 blocks", async () => {
20
+ it("represents image files as path references", async () => {
21
21
  const dir = await mkdtemp(path.join(tmpdir(), "daycare-msg-"));
22
22
  try {
23
23
  const filePath = path.join(dir, "image.png");
@@ -43,8 +43,8 @@ describe("messageBuildUser", () => {
43
43
  const result = await messageBuildUser(entry);
44
44
  const content = result.content;
45
45
  expect(content).toHaveLength(1);
46
- expect(content[0]?.type).toBe("image");
47
- expect(content[0]?.data).toBe(buffer.toString("base64"));
46
+ expect(content[0]?.type).toBe("text");
47
+ expect(content[0]?.text).toContain(`at ${filePath}`);
48
48
  }
49
49
  finally {
50
50
  await rm(dir, { recursive: true, force: true });
@@ -1 +1 @@
1
- {"version":3,"file":"messageBuildUser.spec.js","sourceRoot":"","sources":["../../../sources/engine/messages/messageBuildUser.spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAE9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEzD,MAAM,WAAW,GAAG,EAAE,CAAC;AAEvB,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;IAChC,EAAE,CAAC,gDAAgD,EAAE,KAAK,IAAI,EAAE;QAC9D,MAAM,KAAK,GAAG;YACZ,EAAE,EAAE,OAAO;YACX,OAAO,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE;YAC1B,OAAO,EAAE,WAAW;YACpB,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE;SACvB,CAAC;QAEF,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,KAAK,CAAC,CAAC;QAE7C,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACjC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACrC,MAAM,CAAC,OAAO,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qCAAqC,EAAE,KAAK,IAAI,EAAE;QACnD,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,cAAc,CAAC,CAAC,CAAC;QAC/D,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;YAC7C,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACpC,MAAM,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YAElC,MAAM,KAAK,GAAG;gBACZ,EAAE,EAAE,OAAO;gBACX,OAAO,EAAE;oBACP,IAAI,EAAE,EAAE;oBACR,KAAK,EAAE;wBACL;4BACE,EAAE,EAAE,QAAQ;4BACZ,IAAI,EAAE,WAAW;4BACjB,QAAQ,EAAE,WAAW;4BACrB,IAAI,EAAE,MAAM,CAAC,MAAM;4BACnB,IAAI,EAAE,QAAQ;yBACf;qBACF;iBACF;gBACD,OAAO,EAAE,WAAW;gBACpB,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE;aACvB,CAAC;YAEF,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,KAAK,CAAC,CAAC;YAC7C,MAAM,OAAO,GAAG,MAAM,CAAC,OAAiD,CAAC;YAEzE,MAAM,CAAC,OAAO,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YAChC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACvC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC3D,CAAC;gBAAS,CAAC;YACT,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAClD,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"messageBuildUser.spec.js","sourceRoot":"","sources":["../../../sources/engine/messages/messageBuildUser.spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAE9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEzD,MAAM,WAAW,GAAG,EAAE,CAAC;AAEvB,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;IAChC,EAAE,CAAC,gDAAgD,EAAE,KAAK,IAAI,EAAE;QAC9D,MAAM,KAAK,GAAG;YACZ,EAAE,EAAE,OAAO;YACX,OAAO,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE;YAC1B,OAAO,EAAE,WAAW;YACpB,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE;SACvB,CAAC;QAEF,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,KAAK,CAAC,CAAC;QAE7C,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACjC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACrC,MAAM,CAAC,OAAO,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2CAA2C,EAAE,KAAK,IAAI,EAAE;QACzD,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,cAAc,CAAC,CAAC,CAAC;QAC/D,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;YAC7C,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACpC,MAAM,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YAElC,MAAM,KAAK,GAAG;gBACZ,EAAE,EAAE,OAAO;gBACX,OAAO,EAAE;oBACP,IAAI,EAAE,EAAE;oBACR,KAAK,EAAE;wBACL;4BACE,EAAE,EAAE,QAAQ;4BACZ,IAAI,EAAE,WAAW;4BACjB,QAAQ,EAAE,WAAW;4BACrB,IAAI,EAAE,MAAM,CAAC,MAAM;4BACnB,IAAI,EAAE,QAAQ;yBACf;qBACF;iBACF;gBACD,OAAO,EAAE,WAAW;gBACpB,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE;aACvB,CAAC;YAEF,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,KAAK,CAAC,CAAC;YAC7C,MAAM,OAAO,GAAG,MAAM,CAAC,OAAiD,CAAC;YAEzE,MAAM,CAAC,OAAO,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YAChC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACtC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,SAAS,CAAC,MAAM,QAAQ,EAAE,CAAC,CAAC;QACvD,CAAC;gBAAS,CAAC;YACT,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAClD,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"image-generation.d.ts","sourceRoot":"","sources":["../../../../sources/engine/modules/tools/image-generation.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,+BAA+B,CAAC;AAE7E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAa9C,wBAAgB,wBAAwB,CACtC,aAAa,EAAE,uBAAuB,GACrC,cAAc,CAgGhB"}
1
+ {"version":3,"file":"image-generation.d.ts","sourceRoot":"","sources":["../../../../sources/engine/modules/tools/image-generation.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,+BAA+B,CAAC;AAE7E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAa9C,wBAAgB,wBAAwB,CACtC,aAAa,EAAE,uBAAuB,GACrC,cAAc,CA8FhB"}
@@ -41,14 +41,14 @@ export function buildImageGenerationTool(imageRegistry) {
41
41
  logger: toolContext.logger
42
42
  });
43
43
  const workspaceDir = toolContext.permissions.workingDir;
44
- const workspaceImagesDir = path.join(workspaceDir, "images");
45
- await fs.mkdir(workspaceImagesDir, { recursive: true });
44
+ const workspaceFilesDir = path.join(workspaceDir, "files");
45
+ await fs.mkdir(workspaceFilesDir, { recursive: true });
46
46
  const createdAt = new Date();
47
47
  const timestamp = createdAt.toISOString().replace(/[:.]/g, "-");
48
48
  const content = [
49
49
  {
50
50
  type: "text",
51
- text: `Generated ${result.files.length} image(s) with ${providerId}.`
51
+ text: `Generated ${result.files.length} image(s) with ${providerId}. Saved under ${workspaceFilesDir}.`
52
52
  }
53
53
  ];
54
54
  const workspaceFiles = [];
@@ -56,16 +56,14 @@ export function buildImageGenerationTool(imageRegistry) {
56
56
  if (!file.mimeType.startsWith("image/")) {
57
57
  continue;
58
58
  }
59
- const data = await fs.readFile(file.path);
60
59
  const suffix = result.files.length > 1 ? `-${index + 1}` : "";
61
60
  const filename = `${timestamp}${suffix}.png`;
62
- const outputPath = path.join(workspaceImagesDir, filename);
63
- await fs.writeFile(outputPath, data);
61
+ const outputPath = path.join(workspaceFilesDir, filename);
62
+ await fs.copyFile(file.path, outputPath);
64
63
  workspaceFiles.push({ name: filename, path: outputPath, mimeType: file.mimeType });
65
64
  content.push({
66
- type: "image",
67
- data: data.toString("base64"),
68
- mimeType: file.mimeType
65
+ type: "text",
66
+ text: `Image file: ${outputPath} (${file.mimeType})`
69
67
  });
70
68
  }
71
69
  const toolMessage = {
@@ -82,7 +80,7 @@ export function buildImageGenerationTool(imageRegistry) {
82
80
  size: file.size
83
81
  })),
84
82
  workspace: {
85
- dir: workspaceImagesDir,
83
+ dir: workspaceFilesDir,
86
84
  files: workspaceFiles
87
85
  }
88
86
  },
@@ -1 +1 @@
1
- {"version":3,"file":"image-generation.js","sourceRoot":"","sources":["../../../../sources/engine/modules/tools/image-generation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"image-generation.js","sourceRoot":"","sources":["../../../../sources/engine/modules/tools/image-generation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=image-generation.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"image-generation.spec.d.ts","sourceRoot":"","sources":["../../../../sources/engine/modules/tools/image-generation.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,71 @@
1
+ import { promises as fs } from "node:fs";
2
+ import os from "node:os";
3
+ import path from "node:path";
4
+ import { describe, expect, it } from "vitest";
5
+ import { ImageGenerationRegistry } from "../imageGenerationRegistry.js";
6
+ import { buildImageGenerationTool } from "./image-generation.js";
7
+ describe("buildImageGenerationTool", () => {
8
+ it("returns file path references without embedding image bytes", async () => {
9
+ const tempDir = await fs.mkdtemp(path.join(os.tmpdir(), "daycare-image-tool-"));
10
+ try {
11
+ const sourcePath = path.join(tempDir, "source.png");
12
+ await fs.writeFile(sourcePath, Buffer.from("png-bytes"));
13
+ const imageRegistry = new ImageGenerationRegistry();
14
+ imageRegistry.register("test-plugin", {
15
+ id: "test-provider",
16
+ label: "Test Provider",
17
+ generate: async () => ({
18
+ files: [
19
+ {
20
+ id: "file-1",
21
+ name: "source.png",
22
+ mimeType: "image/png",
23
+ size: 9,
24
+ path: sourcePath
25
+ }
26
+ ]
27
+ })
28
+ });
29
+ const tool = buildImageGenerationTool(imageRegistry);
30
+ const result = await tool.execute({ prompt: "draw" }, contextBuild(tempDir), { id: "call-1", name: "generate_image" });
31
+ const workspace = result.toolMessage.details?.workspace;
32
+ expect(workspace?.dir).toBe(path.join(tempDir, "files"));
33
+ expect(workspace?.files).toHaveLength(1);
34
+ const generatedPath = workspace?.files[0]?.path;
35
+ expect(generatedPath).toBeTruthy();
36
+ if (!generatedPath) {
37
+ throw new Error("Missing generated file path");
38
+ }
39
+ const generatedData = await fs.readFile(generatedPath, "utf8");
40
+ expect(generatedData).toBe("png-bytes");
41
+ const content = result.toolMessage.content;
42
+ expect(content.every((block) => block.type === "text")).toBe(true);
43
+ expect(content.some((block) => (block.text ?? "").includes(generatedPath))).toBe(true);
44
+ expect(content.every((block) => !("data" in block))).toBe(true);
45
+ }
46
+ finally {
47
+ await fs.rm(tempDir, { recursive: true, force: true });
48
+ }
49
+ });
50
+ });
51
+ function contextBuild(workingDir) {
52
+ return {
53
+ connectorRegistry: null,
54
+ fileStore: null,
55
+ auth: null,
56
+ logger: console,
57
+ assistant: null,
58
+ permissions: {
59
+ workingDir,
60
+ writeDirs: [],
61
+ readDirs: [],
62
+ network: false
63
+ },
64
+ agent: { id: "agent-test" },
65
+ source: "test",
66
+ messageContext: {},
67
+ agentSystem: null,
68
+ heartbeats: null
69
+ };
70
+ }
71
+ //# sourceMappingURL=image-generation.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"image-generation.spec.js","sourceRoot":"","sources":["../../../../sources/engine/modules/tools/image-generation.spec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ {
2
+ "id": "anthropic-fetch",
3
+ "name": "Anthropic Fetch",
4
+ "description": "Web fetch tool powered by Claude with URL content extraction.",
5
+ "entry": "./plugin.js"
6
+ }
@@ -0,0 +1,6 @@
1
+ {
2
+ "id": "anthropic-search",
3
+ "name": "Anthropic Search",
4
+ "description": "Web search tool powered by Claude with web search.",
5
+ "entry": "./plugin.js"
6
+ }
@@ -0,0 +1,6 @@
1
+ {
2
+ "id": "brave-search",
3
+ "name": "Brave Search",
4
+ "description": "Brave Search tool provider.",
5
+ "entry": "./plugin.js"
6
+ }
@@ -0,0 +1,6 @@
1
+ {
2
+ "id": "database",
3
+ "name": "Database",
4
+ "description": "PGlite-backed database with markdown context.",
5
+ "entry": "./plugin.js"
6
+ }
@@ -0,0 +1,6 @@
1
+ {
2
+ "id": "exa-ai",
3
+ "name": "Exa AI",
4
+ "description": "Web search tool powered by Exa AI.",
5
+ "entry": "./plugin.js"
6
+ }
@@ -0,0 +1,6 @@
1
+ {
2
+ "id": "firecrawl",
3
+ "name": "Firecrawl",
4
+ "description": "Web fetch tool powered by Firecrawl.",
5
+ "entry": "./plugin.js"
6
+ }
@@ -0,0 +1,6 @@
1
+ {
2
+ "id": "gemini-search",
3
+ "name": "Gemini Search",
4
+ "description": "Web search tool powered by Google Gemini with Search Grounding.",
5
+ "entry": "./plugin.js"
6
+ }
@@ -0,0 +1,6 @@
1
+ {
2
+ "id": "memory",
3
+ "name": "Memory",
4
+ "description": "Structured memory entities stored as markdown.",
5
+ "entry": "./plugin.js"
6
+ }
@@ -0,0 +1,6 @@
1
+ {
2
+ "id": "monty-python",
3
+ "name": "Monty Python",
4
+ "description": "Sandboxed Python execution using @pydantic/monty.",
5
+ "entry": "./plugin.js"
6
+ }
@@ -0,0 +1,6 @@
1
+ {
2
+ "id": "nano-banana-pro",
3
+ "name": "Nano Banana Pro",
4
+ "description": "Nano Banana Pro image generation provider.",
5
+ "entry": "./plugin.js"
6
+ }
@@ -0,0 +1,6 @@
1
+ {
2
+ "id": "openai-search",
3
+ "name": "OpenAI Search",
4
+ "description": "Web search tool powered by GPT with web search.",
5
+ "entry": "./plugin.js"
6
+ }
@@ -0,0 +1,6 @@
1
+ {
2
+ "id": "perplexity-search",
3
+ "name": "Perplexity Search",
4
+ "description": "Web search tool powered by Perplexity AI.",
5
+ "entry": "./plugin.js"
6
+ }
@@ -0,0 +1,6 @@
1
+ {
2
+ "id": "shell",
3
+ "name": "Shell",
4
+ "description": "Workspace file access, command execution, and durable process management tools.",
5
+ "entry": "./plugin.js"
6
+ }
@@ -0,0 +1,6 @@
1
+ {
2
+ "id": "telegram",
3
+ "name": "Telegram",
4
+ "description": "Telegram connector and incoming message adapter.",
5
+ "entry": "./plugin.js"
6
+ }
@@ -0,0 +1,6 @@
1
+ {
2
+ "id": "web-fetch",
3
+ "name": "Web Fetch",
4
+ "description": "Minimal web fetch tool that downloads URL content without JavaScript.",
5
+ "entry": "./plugin.js"
6
+ }
@@ -0,0 +1,6 @@
1
+ {
2
+ "id": "whatsapp",
3
+ "name": "WhatsApp",
4
+ "description": "Connect to WhatsApp using Baileys (WhatsApp Web API)",
5
+ "entry": "./plugin.js"
6
+ }
@@ -222,6 +222,7 @@ Before answering about prior work, decisions, people, preferences: check memory
222
222
 
223
223
  Incoming: `<time>...</time><message_id>...</message_id><message>...</message>`.{{#if isForeground}} Use `message_id` for reactions.{{/if}}
224
224
  `<system_message origin="<agentId>">` = internal agent updates, not user requests.
225
+ Connector and image-generation files are provided as file paths under `{{workspace}}/files`; never expect inline/base64 bytes in message content.
225
226
 
226
227
  {{#if isForeground}}
227
228
  {{#if messageFormatPrompt}}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Runs the daycare-cli release flow.
3
+ * Expects: git repository is clean; npm credentials are already configured.
4
+ */
5
+ export declare function releaseRun(): Promise<void>;
6
+ //# sourceMappingURL=releaseRun.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"releaseRun.d.ts","sourceRoot":"","sources":["../../sources/release/releaseRun.ts"],"names":[],"mappings":"AAkBA;;;GAGG;AACH,wBAAsB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CA2ChD"}
@@ -0,0 +1,90 @@
1
+ import { execFileSync } from "node:child_process";
2
+ import { readFileSync } from "node:fs";
3
+ import { dirname, resolve } from "node:path";
4
+ import { fileURLToPath } from "node:url";
5
+ import { releaseVersionPrompt } from "./releaseVersionPrompt.js";
6
+ const scriptDirectory = dirname(fileURLToPath(import.meta.url));
7
+ const packageDirectory = resolve(scriptDirectory, "../..");
8
+ const repositoryDirectory = resolve(packageDirectory, "../..");
9
+ const packageManifestPath = resolve(packageDirectory, "package.json");
10
+ const packageManifestRelativePath = "packages/daycare/package.json";
11
+ const npmRegistry = "https://registry.npmjs.org/";
12
+ /**
13
+ * Runs the daycare-cli release flow.
14
+ * Expects: git repository is clean; npm credentials are already configured.
15
+ */
16
+ export async function releaseRun() {
17
+ assertWorkingTreeIsClean();
18
+ const currentVersion = packageVersionRead();
19
+ const nextVersion = await releaseVersionPrompt(currentVersion);
20
+ const tagName = `daycare-cli@${nextVersion}`;
21
+ const commitMessage = `chore(release): daycare-cli ${nextVersion}`;
22
+ let releaseCommitHash = null;
23
+ let tagCreated = false;
24
+ assertTagMissing(tagName);
25
+ try {
26
+ commandRun("yarn", ["install", "--frozen-lockfile"], repositoryDirectory);
27
+ commandRun("npm", ["whoami", "--registry", npmRegistry], packageDirectory);
28
+ commandRun("npm", ["version", nextVersion, "--no-git-tag-version", "--registry", npmRegistry], packageDirectory);
29
+ commandRun("git", ["add", packageManifestRelativePath], repositoryDirectory);
30
+ commandRun("git", ["commit", "-m", commitMessage], repositoryDirectory);
31
+ releaseCommitHash = commandOutput("git", ["rev-parse", "HEAD"], repositoryDirectory);
32
+ commandRun("yarn", ["test"], repositoryDirectory);
33
+ commandRun("yarn", ["build"], repositoryDirectory);
34
+ commandRun("git", ["tag", tagName], repositoryDirectory);
35
+ tagCreated = true;
36
+ commandRun("npm", ["publish", "--access", "public", "--registry", npmRegistry], packageDirectory);
37
+ }
38
+ catch (error) {
39
+ releaseRollback(releaseCommitHash, tagName, tagCreated);
40
+ throw error;
41
+ }
42
+ commandRun("git", ["push", "origin", "HEAD"], repositoryDirectory);
43
+ commandRun("git", ["push", "origin", tagName], repositoryDirectory);
44
+ console.log(`Released daycare-cli ${nextVersion} with tag ${tagName}`);
45
+ }
46
+ function packageVersionRead() {
47
+ const raw = readFileSync(packageManifestPath, "utf8");
48
+ const parsed = JSON.parse(raw);
49
+ const version = parsed.version?.trim();
50
+ if (!version) {
51
+ throw new Error("Could not read current version from packages/daycare/package.json");
52
+ }
53
+ return version;
54
+ }
55
+ function assertWorkingTreeIsClean() {
56
+ const output = commandOutput("git", ["status", "--porcelain"], repositoryDirectory);
57
+ if (output.length > 0) {
58
+ throw new Error("Release requires a clean git working tree. Commit or stash pending changes first.");
59
+ }
60
+ }
61
+ function assertTagMissing(tagName) {
62
+ const output = commandOutput("git", ["tag", "--list", "--format=%(refname:strip=2)", tagName], repositoryDirectory);
63
+ if (output.split("\n").some((line) => line.trim() === tagName)) {
64
+ throw new Error(`Tag ${tagName} already exists.`);
65
+ }
66
+ }
67
+ function commandRun(command, args, cwd) {
68
+ execFileSync(command, args, {
69
+ cwd,
70
+ stdio: "inherit"
71
+ });
72
+ }
73
+ function commandOutput(command, args, cwd) {
74
+ return execFileSync(command, args, {
75
+ cwd,
76
+ stdio: ["ignore", "pipe", "inherit"],
77
+ encoding: "utf8"
78
+ }).trim();
79
+ }
80
+ function releaseRollback(releaseCommitHash, tagName, tagCreated) {
81
+ if (!releaseCommitHash) {
82
+ return;
83
+ }
84
+ if (tagCreated) {
85
+ commandRun("git", ["tag", "-d", tagName], repositoryDirectory);
86
+ }
87
+ commandRun("git", ["revert", "--no-edit", releaseCommitHash], repositoryDirectory);
88
+ }
89
+ await releaseRun();
90
+ //# sourceMappingURL=releaseRun.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"releaseRun.js","sourceRoot":"","sources":["../../sources/release/releaseRun.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ type ReleaseVersionIncrementKind = "major" | "minor" | "patch";
2
+ /**
3
+ * Increments a semantic version using major, minor, or patch semantics.
4
+ * Expects: value is a valid semantic version.
5
+ */
6
+ export declare function releaseVersionIncrement(value: string, kind: ReleaseVersionIncrementKind): string;
7
+ export {};
8
+ //# sourceMappingURL=releaseVersionIncrement.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"releaseVersionIncrement.d.ts","sourceRoot":"","sources":["../../sources/release/releaseVersionIncrement.ts"],"names":[],"mappings":"AAGA,KAAK,2BAA2B,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,CAAC;AAE/D;;;GAGG;AACH,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,2BAA2B,GAChC,MAAM,CAkBR"}
@@ -0,0 +1,23 @@
1
+ const SEMVER_PATTERN = /^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-[0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*)?(?:\+[0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*)?$/;
2
+ /**
3
+ * Increments a semantic version using major, minor, or patch semantics.
4
+ * Expects: value is a valid semantic version.
5
+ */
6
+ export function releaseVersionIncrement(value, kind) {
7
+ const match = SEMVER_PATTERN.exec(value.trim());
8
+ if (!match) {
9
+ throw new Error(`Invalid semantic version: ${value}`);
10
+ }
11
+ const major = Number(match[1]);
12
+ const minor = Number(match[2]);
13
+ const patch = Number(match[3]);
14
+ switch (kind) {
15
+ case "major":
16
+ return `${major + 1}.0.0`;
17
+ case "minor":
18
+ return `${major}.${minor + 1}.0`;
19
+ case "patch":
20
+ return `${major}.${minor}.${patch + 1}`;
21
+ }
22
+ }
23
+ //# sourceMappingURL=releaseVersionIncrement.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"releaseVersionIncrement.js","sourceRoot":"","sources":["../../sources/release/releaseVersionIncrement.ts"],"names":[],"mappings":"AAAA,MAAM,cAAc,GAClB,2HAA2H,CAAC;AAI9H;;;GAGG;AACH,MAAM,UAAU,uBAAuB,CACrC,KAAa,EACb,IAAiC;IAEjC,MAAM,KAAK,GAAG,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;IAChD,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,6BAA6B,KAAK,EAAE,CAAC,CAAC;IACxD,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/B,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/B,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAE/B,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,OAAO;YACV,OAAO,GAAG,KAAK,GAAG,CAAC,MAAM,CAAC;QAC5B,KAAK,OAAO;YACV,OAAO,GAAG,KAAK,IAAI,KAAK,GAAG,CAAC,IAAI,CAAC;QACnC,KAAK,OAAO;YACV,OAAO,GAAG,KAAK,IAAI,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;IAC5C,CAAC;AACH,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=releaseVersionIncrement.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"releaseVersionIncrement.spec.d.ts","sourceRoot":"","sources":["../../sources/release/releaseVersionIncrement.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,20 @@
1
+ import { describe, expect, it } from "vitest";
2
+ import { releaseVersionIncrement } from "./releaseVersionIncrement.js";
3
+ describe("releaseVersionIncrement", () => {
4
+ it("increments patch versions", () => {
5
+ expect(releaseVersionIncrement("1.2.3", "patch")).toBe("1.2.4");
6
+ });
7
+ it("increments minor versions and resets patch", () => {
8
+ expect(releaseVersionIncrement("1.2.3", "minor")).toBe("1.3.0");
9
+ });
10
+ it("increments major versions and resets minor and patch", () => {
11
+ expect(releaseVersionIncrement("1.2.3", "major")).toBe("2.0.0");
12
+ });
13
+ it("accepts prerelease inputs and returns stable increments", () => {
14
+ expect(releaseVersionIncrement("1.2.3-beta.1+build.42", "patch")).toBe("1.2.4");
15
+ });
16
+ it("throws for invalid semver values", () => {
17
+ expect(() => releaseVersionIncrement("v1.2.3", "patch")).toThrow("Invalid semantic version: v1.2.3");
18
+ });
19
+ });
20
+ //# sourceMappingURL=releaseVersionIncrement.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"releaseVersionIncrement.spec.js","sourceRoot":"","sources":["../../sources/release/releaseVersionIncrement.spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAE9C,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAEvE,QAAQ,CAAC,yBAAyB,EAAE,GAAG,EAAE;IACvC,EAAE,CAAC,2BAA2B,EAAE,GAAG,EAAE;QACnC,MAAM,CAAC,uBAAuB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAClE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4CAA4C,EAAE,GAAG,EAAE;QACpD,MAAM,CAAC,uBAAuB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAClE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sDAAsD,EAAE,GAAG,EAAE;QAC9D,MAAM,CAAC,uBAAuB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAClE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yDAAyD,EAAE,GAAG,EAAE;QACjE,MAAM,CAAC,uBAAuB,CAAC,uBAAuB,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAClF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kCAAkC,EAAE,GAAG,EAAE;QAC1C,MAAM,CAAC,GAAG,EAAE,CAAC,uBAAuB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,OAAO,CAC9D,kCAAkC,CACnC,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Prompts for a release version strategy and resolves the next semantic version.
3
+ * Expects: currentVersion is a valid semantic version.
4
+ */
5
+ export declare function releaseVersionPrompt(currentVersion: string): Promise<string>;
6
+ //# sourceMappingURL=releaseVersionPrompt.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"releaseVersionPrompt.d.ts","sourceRoot":"","sources":["../../sources/release/releaseVersionPrompt.ts"],"names":[],"mappings":"AASA;;;GAGG;AACH,wBAAsB,oBAAoB,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CA4ClF"}
@@ -0,0 +1,46 @@
1
+ import { promptInput, promptSelect } from "../commands/prompts.js";
2
+ import { releaseVersionIncrement } from "./releaseVersionIncrement.js";
3
+ const SEMVER_PATTERN = /^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-[0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*)?(?:\+[0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*)?$/;
4
+ /**
5
+ * Prompts for a release version strategy and resolves the next semantic version.
6
+ * Expects: currentVersion is a valid semantic version.
7
+ */
8
+ export async function releaseVersionPrompt(currentVersion) {
9
+ const nextVersions = {
10
+ patch: releaseVersionIncrement(currentVersion, "patch"),
11
+ minor: releaseVersionIncrement(currentVersion, "minor"),
12
+ major: releaseVersionIncrement(currentVersion, "major")
13
+ };
14
+ const mode = await promptSelect({
15
+ message: `Current version is ${currentVersion}. Select release increment:`,
16
+ choices: [
17
+ { value: "patch", name: `patch -> ${nextVersions.patch}` },
18
+ { value: "minor", name: `minor -> ${nextVersions.minor}` },
19
+ { value: "major", name: `major -> ${nextVersions.major}` },
20
+ { value: "custom", name: "custom (enter version)" }
21
+ ]
22
+ });
23
+ if (!mode) {
24
+ throw new Error("Release cancelled.");
25
+ }
26
+ if (mode !== "custom") {
27
+ return nextVersions[mode];
28
+ }
29
+ const customVersion = await promptInput({
30
+ message: "Enter custom semantic version",
31
+ default: nextVersions.patch,
32
+ placeholder: "x.y.z"
33
+ });
34
+ if (!customVersion) {
35
+ throw new Error("Release cancelled.");
36
+ }
37
+ const normalizedVersion = customVersion.trim();
38
+ if (!SEMVER_PATTERN.test(normalizedVersion)) {
39
+ throw new Error("Version must be a valid semantic version.");
40
+ }
41
+ if (normalizedVersion === currentVersion) {
42
+ throw new Error("New version must differ from current version.");
43
+ }
44
+ return normalizedVersion;
45
+ }
46
+ //# sourceMappingURL=releaseVersionPrompt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"releaseVersionPrompt.js","sourceRoot":"","sources":["../../sources/release/releaseVersionPrompt.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAEnE,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAEvE,MAAM,cAAc,GAClB,2HAA2H,CAAC;AAI9H;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,cAAsB;IAC/D,MAAM,YAAY,GAAG;QACnB,KAAK,EAAE,uBAAuB,CAAC,cAAc,EAAE,OAAO,CAAC;QACvD,KAAK,EAAE,uBAAuB,CAAC,cAAc,EAAE,OAAO,CAAC;QACvD,KAAK,EAAE,uBAAuB,CAAC,cAAc,EAAE,OAAO,CAAC;KACxD,CAAC;IAEF,MAAM,IAAI,GAAG,MAAM,YAAY,CAAqB;QAClD,OAAO,EAAE,sBAAsB,cAAc,6BAA6B;QAC1E,OAAO,EAAE;YACP,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,YAAY,YAAY,CAAC,KAAK,EAAE,EAAE;YAC1D,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,YAAY,YAAY,CAAC,KAAK,EAAE,EAAE;YAC1D,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,YAAY,YAAY,CAAC,KAAK,EAAE,EAAE;YAC1D,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,wBAAwB,EAAE;SACpD;KACF,CAAC,CAAC;IAEH,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;IACxC,CAAC;IAED,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;QACtB,OAAO,YAAY,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;IAED,MAAM,aAAa,GAAG,MAAM,WAAW,CAAC;QACtC,OAAO,EAAE,+BAA+B;QACxC,OAAO,EAAE,YAAY,CAAC,KAAK;QAC3B,WAAW,EAAE,OAAO;KACrB,CAAC,CAAC;IAEH,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;IACxC,CAAC;IAED,MAAM,iBAAiB,GAAG,aAAa,CAAC,IAAI,EAAE,CAAC;IAC/C,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,iBAAiB,CAAC,EAAE,CAAC;QAC5C,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;IAC/D,CAAC;IACD,IAAI,iBAAiB,KAAK,cAAc,EAAE,CAAC;QACzC,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;IACnE,CAAC;IAED,OAAO,iBAAiB,CAAC;AAC3B,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "daycare-cli",
3
- "version": "0.0.1",
3
+ "version": "0.0.4",
4
4
  "description": "Local-first, plugin-driven multi-agent runtime",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -34,8 +34,9 @@
34
34
  "node": ">=22"
35
35
  },
36
36
  "scripts": {
37
- "build": "tsc -p tsconfig.json && cp -r sources/prompts dist/ && cp -r sources/skills dist/skills",
37
+ "build": "tsc -p tsconfig.json && cp -r sources/prompts dist/ && cp -r sources/skills dist/skills && find sources/plugins -name 'plugin.json' -exec sh -c 'mkdir -p dist/plugins/$(basename $(dirname \"$1\")) && cp \"$1\" dist/plugins/$(basename $(dirname \"$1\"))/' _ {} \\;",
38
38
  "dev": "tsx sources/main.ts",
39
+ "release": "tsx sources/release/releaseRun.ts",
39
40
  "recipe": "tsx sources/recipe/recipeRun.ts",
40
41
  "test": "vitest run",
41
42
  "test:watch": "vitest",