daycare-cli 0.0.2 → 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 (36) 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/prompts/SYSTEM.md +1 -0
  20. package/dist/release/releaseRun.d.ts +6 -0
  21. package/dist/release/releaseRun.d.ts.map +1 -0
  22. package/dist/release/releaseRun.js +90 -0
  23. package/dist/release/releaseRun.js.map +1 -0
  24. package/dist/release/releaseVersionIncrement.d.ts +8 -0
  25. package/dist/release/releaseVersionIncrement.d.ts.map +1 -0
  26. package/dist/release/releaseVersionIncrement.js +23 -0
  27. package/dist/release/releaseVersionIncrement.js.map +1 -0
  28. package/dist/release/releaseVersionIncrement.spec.d.ts +2 -0
  29. package/dist/release/releaseVersionIncrement.spec.d.ts.map +1 -0
  30. package/dist/release/releaseVersionIncrement.spec.js +20 -0
  31. package/dist/release/releaseVersionIncrement.spec.js.map +1 -0
  32. package/dist/release/releaseVersionPrompt.d.ts +6 -0
  33. package/dist/release/releaseVersionPrompt.d.ts.map +1 -0
  34. package/dist/release/releaseVersionPrompt.js +46 -0
  35. package/dist/release/releaseVersionPrompt.js.map +1 -0
  36. package/package.json +2 -1
@@ -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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"}
@@ -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.2",
3
+ "version": "0.0.4",
4
4
  "description": "Local-first, plugin-driven multi-agent runtime",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -36,6 +36,7 @@
36
36
  "scripts": {
37
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",