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.
- package/dist/config/configResolve.js +2 -2
- package/dist/config/configResolve.js.map +1 -1
- package/dist/config/configResolve.spec.d.ts +2 -0
- package/dist/config/configResolve.spec.d.ts.map +1 -0
- package/dist/config/configResolve.spec.js +19 -0
- package/dist/config/configResolve.spec.js.map +1 -0
- package/dist/engine/messages/messageBuildUser.d.ts.map +1 -1
- package/dist/engine/messages/messageBuildUser.js +4 -15
- package/dist/engine/messages/messageBuildUser.js.map +1 -1
- package/dist/engine/messages/messageBuildUser.spec.js +3 -3
- package/dist/engine/messages/messageBuildUser.spec.js.map +1 -1
- package/dist/engine/modules/tools/image-generation.d.ts.map +1 -1
- package/dist/engine/modules/tools/image-generation.js +8 -10
- package/dist/engine/modules/tools/image-generation.js.map +1 -1
- package/dist/engine/modules/tools/image-generation.spec.d.ts +2 -0
- package/dist/engine/modules/tools/image-generation.spec.d.ts.map +1 -0
- package/dist/engine/modules/tools/image-generation.spec.js +71 -0
- package/dist/engine/modules/tools/image-generation.spec.js.map +1 -0
- package/dist/prompts/SYSTEM.md +1 -0
- package/dist/release/releaseRun.d.ts +6 -0
- package/dist/release/releaseRun.d.ts.map +1 -0
- package/dist/release/releaseRun.js +90 -0
- package/dist/release/releaseRun.js.map +1 -0
- package/dist/release/releaseVersionIncrement.d.ts +8 -0
- package/dist/release/releaseVersionIncrement.d.ts.map +1 -0
- package/dist/release/releaseVersionIncrement.js +23 -0
- package/dist/release/releaseVersionIncrement.js.map +1 -0
- package/dist/release/releaseVersionIncrement.spec.d.ts +2 -0
- package/dist/release/releaseVersionIncrement.spec.d.ts.map +1 -0
- package/dist/release/releaseVersionIncrement.spec.js +20 -0
- package/dist/release/releaseVersionIncrement.spec.js.map +1 -0
- package/dist/release/releaseVersionPrompt.d.ts +6 -0
- package/dist/release/releaseVersionPrompt.d.ts.map +1 -0
- package/dist/release/releaseVersionPrompt.js +46 -0
- package/dist/release/releaseVersionPrompt.js.map +1 -0
- 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(
|
|
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,
|
|
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 @@
|
|
|
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":"
|
|
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
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
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":"
|
|
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("
|
|
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("
|
|
47
|
-
expect(content[0]?.
|
|
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,
|
|
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,
|
|
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
|
|
45
|
-
await fs.mkdir(
|
|
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(
|
|
63
|
-
await fs.
|
|
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: "
|
|
67
|
-
|
|
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:
|
|
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":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AACzC,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,IAAI,MAAM,WAAW,CAAC;AAO7B,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CACxB;IACE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC;IACrC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC,CAAC;IACtD,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC,CAAC;IAClD,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;IAC7D,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC,CAAC;CACpD,EACD,EAAE,oBAAoB,EAAE,KAAK,EAAE,CAChC,CAAC;AAEF,MAAM,UAAU,wBAAwB,CACtC,aAAsC;IAEtC,OAAO;QACL,IAAI,EAAE;YACJ,IAAI,EAAE,gBAAgB;YACtB,WAAW,EAAE,kEAAkE;YAC/E,UAAU,EAAE,MAAM;SACnB;QACD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,EAAE;YAC7C,MAAM,OAAO,GAAG,IAAsD,CAAC;YACvE,MAAM,SAAS,GAAG,aAAa,CAAC,IAAI,EAAE,CAAC;YACvC,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC3B,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;YAC7D,CAAC;YACD,MAAM,UAAU,GACd,OAAO,CAAC,QAAQ;gBAChB,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAE,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YACrD,IAAI,CAAC,UAAU,EAAE,CAAC;gBAChB,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;YAC1E,CAAC;YACD,MAAM,QAAQ,GAAG,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YAC/C,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,MAAM,IAAI,KAAK,CAAC,2BAA2B,UAAU,EAAE,CAAC,CAAC;YAC3D,CAAC;YAED,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,QAAQ,CACpC;gBACE,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,KAAK,EAAE,OAAO,CAAC,KAAK;aACrB,EACD;gBACE,SAAS,EAAE,WAAW,CAAC,SAAS;gBAChC,IAAI,EAAE,WAAW,CAAC,IAAI;gBACtB,MAAM,EAAE,WAAW,CAAC,MAAM;aAC3B,CACF,CAAC;YAEF,MAAM,YAAY,GAAG,WAAW,CAAC,WAAW,CAAC,UAAU,CAAC;YACxD,MAAM,
|
|
1
|
+
{"version":3,"file":"image-generation.js","sourceRoot":"","sources":["../../../../sources/engine/modules/tools/image-generation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AACzC,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,IAAI,MAAM,WAAW,CAAC;AAO7B,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CACxB;IACE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC;IACrC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC,CAAC;IACtD,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC,CAAC;IAClD,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;IAC7D,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC,CAAC;CACpD,EACD,EAAE,oBAAoB,EAAE,KAAK,EAAE,CAChC,CAAC;AAEF,MAAM,UAAU,wBAAwB,CACtC,aAAsC;IAEtC,OAAO;QACL,IAAI,EAAE;YACJ,IAAI,EAAE,gBAAgB;YACtB,WAAW,EAAE,kEAAkE;YAC/E,UAAU,EAAE,MAAM;SACnB;QACD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,EAAE;YAC7C,MAAM,OAAO,GAAG,IAAsD,CAAC;YACvE,MAAM,SAAS,GAAG,aAAa,CAAC,IAAI,EAAE,CAAC;YACvC,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC3B,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;YAC7D,CAAC;YACD,MAAM,UAAU,GACd,OAAO,CAAC,QAAQ;gBAChB,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAE,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YACrD,IAAI,CAAC,UAAU,EAAE,CAAC;gBAChB,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;YAC1E,CAAC;YACD,MAAM,QAAQ,GAAG,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YAC/C,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,MAAM,IAAI,KAAK,CAAC,2BAA2B,UAAU,EAAE,CAAC,CAAC;YAC3D,CAAC;YAED,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,QAAQ,CACpC;gBACE,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,KAAK,EAAE,OAAO,CAAC,KAAK;aACrB,EACD;gBACE,SAAS,EAAE,WAAW,CAAC,SAAS;gBAChC,IAAI,EAAE,WAAW,CAAC,IAAI;gBACtB,MAAM,EAAE,WAAW,CAAC,MAAM;aAC3B,CACF,CAAC;YAEF,MAAM,YAAY,GAAG,WAAW,CAAC,WAAW,CAAC,UAAU,CAAC;YACxD,MAAM,iBAAiB,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;YAC3D,MAAM,EAAE,CAAC,KAAK,CAAC,iBAAiB,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YACvD,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC;YAC7B,MAAM,SAAS,GAAG,SAAS,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;YAEhE,MAAM,OAAO,GAA0C;gBACrD;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,aAAa,MAAM,CAAC,KAAK,CAAC,MAAM,kBAAkB,UAAU,iBAAiB,iBAAiB,GAAG;iBACxG;aACF,CAAC;YACF,MAAM,cAAc,GAA4D,EAAE,CAAC;YACnF,KAAK,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;gBACnD,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;oBACxC,SAAS;gBACX,CAAC;gBACD,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC9D,MAAM,QAAQ,GAAG,GAAG,SAAS,GAAG,MAAM,MAAM,CAAC;gBAC7C,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,QAAQ,CAAC,CAAC;gBAC1D,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;gBACzC,cAAc,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;gBACnF,OAAO,CAAC,IAAI,CAAC;oBACX,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,eAAe,UAAU,KAAK,IAAI,CAAC,QAAQ,GAAG;iBACrD,CAAC,CAAC;YACL,CAAC;YAED,MAAM,WAAW,GAAsB;gBACrC,IAAI,EAAE,YAAY;gBAClB,UAAU,EAAE,QAAQ,CAAC,EAAE;gBACvB,QAAQ,EAAE,QAAQ,CAAC,IAAI;gBACvB,OAAO;gBACP,OAAO,EAAE;oBACP,QAAQ,EAAE,UAAU;oBACpB,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;wBACjC,EAAE,EAAE,IAAI,CAAC,EAAE;wBACX,IAAI,EAAE,IAAI,CAAC,IAAI;wBACf,QAAQ,EAAE,IAAI,CAAC,QAAQ;wBACvB,IAAI,EAAE,IAAI,CAAC,IAAI;qBAChB,CAAC,CAAC;oBACH,SAAS,EAAE;wBACT,GAAG,EAAE,iBAAiB;wBACtB,KAAK,EAAE,cAAc;qBACtB;iBACF;gBACD,OAAO,EAAE,KAAK;gBACd,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;aACtB,CAAC;YAEF,OAAO;gBACL,WAAW;gBACX,KAAK,EAAE,MAAM,CAAC,KAAK;aACpB,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -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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"}
|
package/dist/prompts/SYSTEM.md
CHANGED
|
@@ -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 @@
|
|
|
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 @@
|
|
|
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.
|
|
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",
|