dot-agents 0.4.1 → 0.6.0
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/README.md +239 -122
- package/dist/cli/commands/channel.d.ts +19 -0
- package/dist/cli/commands/channel.d.ts.map +1 -1
- package/dist/cli/commands/channel.js +152 -13
- package/dist/cli/commands/channel.js.map +1 -1
- package/dist/cli/commands/check.d.ts.map +1 -1
- package/dist/cli/commands/check.js +61 -1
- package/dist/cli/commands/check.js.map +1 -1
- package/dist/cli/commands/index.d.ts +2 -0
- package/dist/cli/commands/index.d.ts.map +1 -1
- package/dist/cli/commands/index.js +2 -0
- package/dist/cli/commands/index.js.map +1 -1
- package/dist/cli/commands/personas.d.ts +3 -0
- package/dist/cli/commands/personas.d.ts.map +1 -0
- package/dist/cli/commands/personas.js +402 -0
- package/dist/cli/commands/personas.js.map +1 -0
- package/dist/cli/commands/projects.d.ts +3 -0
- package/dist/cli/commands/projects.d.ts.map +1 -0
- package/dist/cli/commands/projects.js +138 -0
- package/dist/cli/commands/projects.js.map +1 -0
- package/dist/cli/commands/run.d.ts.map +1 -1
- package/dist/cli/commands/run.js +4 -5
- package/dist/cli/commands/run.js.map +1 -1
- package/dist/cli/index.js +5 -12
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/lib/runner.d.ts +2 -0
- package/dist/cli/lib/runner.d.ts.map +1 -1
- package/dist/cli/lib/runner.js +102 -25
- package/dist/cli/lib/runner.js.map +1 -1
- package/dist/daemon/api/server.d.ts.map +1 -1
- package/dist/daemon/api/server.js +4 -2
- package/dist/daemon/api/server.js.map +1 -1
- package/dist/daemon/daemon.d.ts +12 -3
- package/dist/daemon/daemon.d.ts.map +1 -1
- package/dist/daemon/daemon.js +138 -35
- package/dist/daemon/daemon.js.map +1 -1
- package/dist/daemon/lib/executor.d.ts +12 -2
- package/dist/daemon/lib/executor.d.ts.map +1 -1
- package/dist/daemon/lib/executor.js +52 -34
- package/dist/daemon/lib/executor.js.map +1 -1
- package/dist/daemon/lib/watcher.d.ts +14 -2
- package/dist/daemon/lib/watcher.d.ts.map +1 -1
- package/dist/daemon/lib/watcher.js +43 -3
- package/dist/daemon/lib/watcher.js.map +1 -1
- package/dist/lib/channel.d.ts +53 -1
- package/dist/lib/channel.d.ts.map +1 -1
- package/dist/lib/channel.js +221 -30
- package/dist/lib/channel.js.map +1 -1
- package/dist/lib/channel.test.d.ts +2 -0
- package/dist/lib/channel.test.d.ts.map +1 -0
- package/dist/lib/channel.test.js +33 -0
- package/dist/lib/channel.test.js.map +1 -0
- package/dist/lib/daemon-status.d.ts +26 -0
- package/dist/lib/daemon-status.d.ts.map +1 -0
- package/dist/lib/daemon-status.js +64 -0
- package/dist/lib/daemon-status.js.map +1 -0
- package/dist/lib/environment.d.ts +87 -0
- package/dist/lib/environment.d.ts.map +1 -0
- package/dist/lib/environment.js +224 -0
- package/dist/lib/environment.js.map +1 -0
- package/dist/lib/frontmatter.d.ts +8 -0
- package/dist/lib/frontmatter.d.ts.map +1 -1
- package/dist/lib/frontmatter.js +16 -3
- package/dist/lib/frontmatter.js.map +1 -1
- package/dist/lib/frontmatter.test.d.ts +2 -0
- package/dist/lib/frontmatter.test.d.ts.map +1 -0
- package/dist/lib/frontmatter.test.js +60 -0
- package/dist/lib/frontmatter.test.js.map +1 -0
- package/dist/lib/index.d.ts +8 -0
- package/dist/lib/index.d.ts.map +1 -1
- package/dist/lib/index.js +8 -0
- package/dist/lib/index.js.map +1 -1
- package/dist/lib/integration.test.d.ts +2 -0
- package/dist/lib/integration.test.d.ts.map +1 -0
- package/dist/lib/integration.test.js +445 -0
- package/dist/lib/integration.test.js.map +1 -0
- package/dist/lib/invoke.d.ts +23 -0
- package/dist/lib/invoke.d.ts.map +1 -0
- package/dist/lib/invoke.js +158 -0
- package/dist/lib/invoke.js.map +1 -0
- package/dist/lib/invoke.test.d.ts +2 -0
- package/dist/lib/invoke.test.d.ts.map +1 -0
- package/dist/lib/invoke.test.js +82 -0
- package/dist/lib/invoke.test.js.map +1 -0
- package/dist/lib/persona.d.ts +41 -0
- package/dist/lib/persona.d.ts.map +1 -1
- package/dist/lib/persona.js +233 -31
- package/dist/lib/persona.js.map +1 -1
- package/dist/lib/persona.test.d.ts +2 -0
- package/dist/lib/persona.test.d.ts.map +1 -0
- package/dist/lib/persona.test.js +324 -0
- package/dist/lib/persona.test.js.map +1 -0
- package/dist/lib/processor.d.ts +50 -0
- package/dist/lib/processor.d.ts.map +1 -0
- package/dist/lib/processor.js +135 -0
- package/dist/lib/processor.js.map +1 -0
- package/dist/lib/processor.test.d.ts +2 -0
- package/dist/lib/processor.test.d.ts.map +1 -0
- package/dist/lib/processor.test.js +134 -0
- package/dist/lib/processor.test.js.map +1 -0
- package/dist/lib/registry.d.ts +109 -0
- package/dist/lib/registry.d.ts.map +1 -0
- package/dist/lib/registry.js +192 -0
- package/dist/lib/registry.js.map +1 -0
- package/dist/lib/registry.test.d.ts +2 -0
- package/dist/lib/registry.test.d.ts.map +1 -0
- package/dist/lib/registry.test.js +236 -0
- package/dist/lib/registry.test.js.map +1 -0
- package/dist/lib/session-thread.d.ts +75 -0
- package/dist/lib/session-thread.d.ts.map +1 -0
- package/dist/lib/session-thread.js +132 -0
- package/dist/lib/session-thread.js.map +1 -0
- package/dist/lib/session-thread.test.d.ts +2 -0
- package/dist/lib/session-thread.test.d.ts.map +1 -0
- package/dist/lib/session-thread.test.js +235 -0
- package/dist/lib/session-thread.test.js.map +1 -0
- package/dist/lib/session.d.ts +150 -0
- package/dist/lib/session.d.ts.map +1 -0
- package/dist/lib/session.js +183 -0
- package/dist/lib/session.js.map +1 -0
- package/dist/lib/session.test.d.ts +2 -0
- package/dist/lib/session.test.d.ts.map +1 -0
- package/dist/lib/session.test.js +336 -0
- package/dist/lib/session.test.js.map +1 -0
- package/dist/lib/types/channel.d.ts +4 -0
- package/dist/lib/types/channel.d.ts.map +1 -1
- package/dist/lib/types/persona.d.ts +51 -0
- package/dist/lib/types/persona.d.ts.map +1 -1
- package/dist/lib/types/triggers.d.ts +11 -0
- package/dist/lib/types/triggers.d.ts.map +1 -1
- package/dist/lib/version.d.ts +26 -0
- package/dist/lib/version.d.ts.map +1 -0
- package/dist/lib/version.js +61 -0
- package/dist/lib/version.js.map +1 -0
- package/internal/personas/_base/PERSONA.md +251 -0
- package/internal/skills/channels/list/SKILL.md +76 -0
- package/internal/skills/channels/publish/SKILL.md +129 -0
- package/internal/skills/channels/read/SKILL.md +124 -0
- package/internal/skills/channels/reply/SKILL.md +138 -0
- package/package.json +7 -2
|
@@ -0,0 +1,336 @@
|
|
|
1
|
+
import { describe, it, beforeEach, afterEach } from "node:test";
|
|
2
|
+
import assert from "node:assert/strict";
|
|
3
|
+
import { mkdir, rm, readdir, readFile, writeFile } from "node:fs/promises";
|
|
4
|
+
import { join } from "node:path";
|
|
5
|
+
import { tmpdir } from "node:os";
|
|
6
|
+
import { generateSessionId, parseSessionId, createSession, finalizeSession, getRecentSessions, readSession, } from "./session.js";
|
|
7
|
+
describe("generateSessionId", () => {
|
|
8
|
+
it("generates ISO-like format with dashes for colons", () => {
|
|
9
|
+
const date = new Date("2025-12-22T15:30:45.123Z");
|
|
10
|
+
const id = generateSessionId(date);
|
|
11
|
+
assert.equal(id, "2025-12-22T15-30-45");
|
|
12
|
+
});
|
|
13
|
+
it("generates unique IDs for different times", () => {
|
|
14
|
+
const date1 = new Date("2025-12-22T15:30:45.000Z");
|
|
15
|
+
const date2 = new Date("2025-12-22T15:30:46.000Z");
|
|
16
|
+
const id1 = generateSessionId(date1);
|
|
17
|
+
const id2 = generateSessionId(date2);
|
|
18
|
+
assert.notEqual(id1, id2);
|
|
19
|
+
});
|
|
20
|
+
});
|
|
21
|
+
describe("parseSessionId", () => {
|
|
22
|
+
it("parses valid session ID back to Date", () => {
|
|
23
|
+
const id = "2025-12-22T15-30-45";
|
|
24
|
+
const date = parseSessionId(id);
|
|
25
|
+
assert.ok(date);
|
|
26
|
+
assert.equal(date.toISOString(), "2025-12-22T15:30:45.000Z");
|
|
27
|
+
});
|
|
28
|
+
it("returns null for invalid format", () => {
|
|
29
|
+
assert.equal(parseSessionId("invalid"), null);
|
|
30
|
+
assert.equal(parseSessionId("2025-12-22"), null);
|
|
31
|
+
assert.equal(parseSessionId(""), null);
|
|
32
|
+
});
|
|
33
|
+
});
|
|
34
|
+
describe("createSession", () => {
|
|
35
|
+
let testDir;
|
|
36
|
+
beforeEach(async () => {
|
|
37
|
+
testDir = join(tmpdir(), `dot-agents-test-${Date.now()}`);
|
|
38
|
+
await mkdir(testDir, { recursive: true });
|
|
39
|
+
});
|
|
40
|
+
afterEach(async () => {
|
|
41
|
+
await rm(testDir, { recursive: true, force: true });
|
|
42
|
+
});
|
|
43
|
+
it("creates session directory", async () => {
|
|
44
|
+
const session = await createSession({
|
|
45
|
+
sessionsDir: testDir,
|
|
46
|
+
runtime: {
|
|
47
|
+
hostname: "test-host",
|
|
48
|
+
executionMode: "headless",
|
|
49
|
+
triggerType: "manual",
|
|
50
|
+
workingDir: "/test",
|
|
51
|
+
},
|
|
52
|
+
});
|
|
53
|
+
const dirs = await readdir(testDir);
|
|
54
|
+
assert.equal(dirs.length, 1);
|
|
55
|
+
assert.equal(dirs[0], session.id);
|
|
56
|
+
});
|
|
57
|
+
it("creates session.md with frontmatter", async () => {
|
|
58
|
+
const session = await createSession({
|
|
59
|
+
sessionsDir: testDir,
|
|
60
|
+
runtime: {
|
|
61
|
+
hostname: "test-host",
|
|
62
|
+
executionMode: "interactive",
|
|
63
|
+
triggerType: "cron",
|
|
64
|
+
workingDir: "/test/dir",
|
|
65
|
+
},
|
|
66
|
+
goal: "Test goal",
|
|
67
|
+
persona: { name: "developer", inheritanceChain: ["_base", "developer"] },
|
|
68
|
+
});
|
|
69
|
+
const content = await readFile(session.sessionFile, "utf-8");
|
|
70
|
+
assert.ok(content.startsWith("---"));
|
|
71
|
+
assert.ok(content.includes("id: " + session.id));
|
|
72
|
+
assert.ok(content.includes("goal: Test goal"));
|
|
73
|
+
assert.ok(content.includes("hostname: test-host"));
|
|
74
|
+
assert.ok(content.includes("executionMode: interactive"));
|
|
75
|
+
assert.ok(content.includes("name: developer"));
|
|
76
|
+
});
|
|
77
|
+
it("includes upstream when provided", async () => {
|
|
78
|
+
const session = await createSession({
|
|
79
|
+
sessionsDir: testDir,
|
|
80
|
+
runtime: {
|
|
81
|
+
hostname: "test-host",
|
|
82
|
+
executionMode: "headless",
|
|
83
|
+
triggerType: "dm",
|
|
84
|
+
workingDir: "/test",
|
|
85
|
+
},
|
|
86
|
+
upstream: "@odin:dottie --session-id abc123",
|
|
87
|
+
});
|
|
88
|
+
const content = await readFile(session.sessionFile, "utf-8");
|
|
89
|
+
assert.ok(content.includes("upstream: \"@odin:dottie --session-id abc123\""));
|
|
90
|
+
});
|
|
91
|
+
});
|
|
92
|
+
describe("finalizeSession", () => {
|
|
93
|
+
let testDir;
|
|
94
|
+
beforeEach(async () => {
|
|
95
|
+
testDir = join(tmpdir(), `dot-agents-test-${Date.now()}`);
|
|
96
|
+
await mkdir(testDir, { recursive: true });
|
|
97
|
+
});
|
|
98
|
+
afterEach(async () => {
|
|
99
|
+
await rm(testDir, { recursive: true, force: true });
|
|
100
|
+
});
|
|
101
|
+
it("updates session.md with results", async () => {
|
|
102
|
+
const session = await createSession({
|
|
103
|
+
sessionsDir: testDir,
|
|
104
|
+
runtime: {
|
|
105
|
+
hostname: "test-host",
|
|
106
|
+
executionMode: "headless",
|
|
107
|
+
triggerType: "manual",
|
|
108
|
+
workingDir: "/test",
|
|
109
|
+
},
|
|
110
|
+
});
|
|
111
|
+
await finalizeSession(session, {
|
|
112
|
+
success: true,
|
|
113
|
+
exitCode: 0,
|
|
114
|
+
duration: 1234,
|
|
115
|
+
stdout: "output text",
|
|
116
|
+
});
|
|
117
|
+
const content = await readFile(session.sessionFile, "utf-8");
|
|
118
|
+
assert.ok(content.includes("ended:"));
|
|
119
|
+
assert.ok(content.includes("success: true"));
|
|
120
|
+
assert.ok(content.includes("exitCode: 0"));
|
|
121
|
+
assert.ok(content.includes("duration: 1234"));
|
|
122
|
+
assert.ok(content.includes("output text"));
|
|
123
|
+
});
|
|
124
|
+
it("includes error information on failure", async () => {
|
|
125
|
+
const session = await createSession({
|
|
126
|
+
sessionsDir: testDir,
|
|
127
|
+
runtime: {
|
|
128
|
+
hostname: "test-host",
|
|
129
|
+
executionMode: "headless",
|
|
130
|
+
triggerType: "manual",
|
|
131
|
+
workingDir: "/test",
|
|
132
|
+
},
|
|
133
|
+
});
|
|
134
|
+
await finalizeSession(session, {
|
|
135
|
+
success: false,
|
|
136
|
+
exitCode: 1,
|
|
137
|
+
duration: 500,
|
|
138
|
+
error: "Something went wrong",
|
|
139
|
+
stderr: "error output",
|
|
140
|
+
});
|
|
141
|
+
const content = await readFile(session.sessionFile, "utf-8");
|
|
142
|
+
assert.ok(content.includes("success: false"));
|
|
143
|
+
assert.ok(content.includes("exitCode: 1"));
|
|
144
|
+
assert.ok(content.includes("error: Something went wrong"));
|
|
145
|
+
assert.ok(content.includes("error output"));
|
|
146
|
+
});
|
|
147
|
+
});
|
|
148
|
+
describe("getRecentSessions", () => {
|
|
149
|
+
let testDir;
|
|
150
|
+
beforeEach(async () => {
|
|
151
|
+
testDir = join(tmpdir(), `dot-agents-test-${Date.now()}`);
|
|
152
|
+
await mkdir(testDir, { recursive: true });
|
|
153
|
+
});
|
|
154
|
+
afterEach(async () => {
|
|
155
|
+
await rm(testDir, { recursive: true, force: true });
|
|
156
|
+
});
|
|
157
|
+
it("returns empty array for empty directory", async () => {
|
|
158
|
+
const sessions = await getRecentSessions(testDir);
|
|
159
|
+
assert.deepEqual(sessions, []);
|
|
160
|
+
});
|
|
161
|
+
it("returns sessions sorted by date (newest first)", async () => {
|
|
162
|
+
// Create sessions with explicit different dates
|
|
163
|
+
const dates = [
|
|
164
|
+
new Date("2025-01-01T10:00:00Z"),
|
|
165
|
+
new Date("2025-01-01T12:00:00Z"),
|
|
166
|
+
new Date("2025-01-01T11:00:00Z"),
|
|
167
|
+
];
|
|
168
|
+
for (const date of dates) {
|
|
169
|
+
// Create session directories manually with different IDs
|
|
170
|
+
const id = date.toISOString().replace(/:/g, "-").split(".")[0];
|
|
171
|
+
const sessionPath = join(testDir, id);
|
|
172
|
+
await mkdir(sessionPath, { recursive: true });
|
|
173
|
+
const content = `---
|
|
174
|
+
id: ${id}
|
|
175
|
+
started: ${date.toISOString()}
|
|
176
|
+
runtime:
|
|
177
|
+
hostname: test
|
|
178
|
+
executionMode: headless
|
|
179
|
+
triggerType: manual
|
|
180
|
+
workingDir: /test
|
|
181
|
+
---
|
|
182
|
+
|
|
183
|
+
# Session Log
|
|
184
|
+
`;
|
|
185
|
+
await writeFile(join(sessionPath, "session.md"), content, "utf-8");
|
|
186
|
+
}
|
|
187
|
+
const sessions = await getRecentSessions(testDir);
|
|
188
|
+
assert.equal(sessions.length, 3);
|
|
189
|
+
// Verify sorted newest first (12:00 > 11:00 > 10:00)
|
|
190
|
+
assert.equal(sessions[0].id, "2025-01-01T12-00-00");
|
|
191
|
+
assert.equal(sessions[1].id, "2025-01-01T11-00-00");
|
|
192
|
+
assert.equal(sessions[2].id, "2025-01-01T10-00-00");
|
|
193
|
+
});
|
|
194
|
+
it("respects limit parameter", async () => {
|
|
195
|
+
// Create 5 sessions with explicit different dates
|
|
196
|
+
for (let i = 0; i < 5; i++) {
|
|
197
|
+
const date = new Date(`2025-01-01T1${i}:00:00Z`);
|
|
198
|
+
const id = date.toISOString().replace(/:/g, "-").split(".")[0];
|
|
199
|
+
const sessionPath = join(testDir, id);
|
|
200
|
+
await mkdir(sessionPath, { recursive: true });
|
|
201
|
+
const content = `---
|
|
202
|
+
id: ${id}
|
|
203
|
+
started: ${date.toISOString()}
|
|
204
|
+
runtime:
|
|
205
|
+
hostname: test
|
|
206
|
+
executionMode: headless
|
|
207
|
+
triggerType: manual
|
|
208
|
+
workingDir: /test
|
|
209
|
+
---
|
|
210
|
+
|
|
211
|
+
# Session Log
|
|
212
|
+
`;
|
|
213
|
+
await writeFile(join(sessionPath, "session.md"), content, "utf-8");
|
|
214
|
+
}
|
|
215
|
+
const sessions = await getRecentSessions(testDir, 3);
|
|
216
|
+
assert.equal(sessions.length, 3);
|
|
217
|
+
});
|
|
218
|
+
it("includes metadata when available", async () => {
|
|
219
|
+
await createSession({
|
|
220
|
+
sessionsDir: testDir,
|
|
221
|
+
runtime: {
|
|
222
|
+
hostname: "test",
|
|
223
|
+
executionMode: "headless",
|
|
224
|
+
triggerType: "manual",
|
|
225
|
+
workingDir: "/test",
|
|
226
|
+
},
|
|
227
|
+
persona: { name: "developer" },
|
|
228
|
+
workflow: { name: "test-workflow" },
|
|
229
|
+
});
|
|
230
|
+
const sessions = await getRecentSessions(testDir);
|
|
231
|
+
assert.equal(sessions.length, 1);
|
|
232
|
+
assert.ok(sessions[0].metadata);
|
|
233
|
+
assert.equal(sessions[0].metadata?.persona?.name, "developer");
|
|
234
|
+
assert.equal(sessions[0].metadata?.workflow?.name, "test-workflow");
|
|
235
|
+
});
|
|
236
|
+
});
|
|
237
|
+
describe("readSession", () => {
|
|
238
|
+
let testDir;
|
|
239
|
+
beforeEach(async () => {
|
|
240
|
+
testDir = join(tmpdir(), `dot-agents-test-${Date.now()}`);
|
|
241
|
+
await mkdir(testDir, { recursive: true });
|
|
242
|
+
});
|
|
243
|
+
afterEach(async () => {
|
|
244
|
+
await rm(testDir, { recursive: true, force: true });
|
|
245
|
+
});
|
|
246
|
+
it("reads existing session", async () => {
|
|
247
|
+
const created = await createSession({
|
|
248
|
+
sessionsDir: testDir,
|
|
249
|
+
runtime: {
|
|
250
|
+
hostname: "test",
|
|
251
|
+
executionMode: "headless",
|
|
252
|
+
triggerType: "manual",
|
|
253
|
+
workingDir: "/test",
|
|
254
|
+
},
|
|
255
|
+
goal: "Test session",
|
|
256
|
+
});
|
|
257
|
+
const read = await readSession(testDir, created.id);
|
|
258
|
+
assert.ok(read);
|
|
259
|
+
assert.equal(read.id, created.id);
|
|
260
|
+
assert.equal(read.metadata.goal, "Test session");
|
|
261
|
+
});
|
|
262
|
+
it("returns null for non-existent session", async () => {
|
|
263
|
+
const result = await readSession(testDir, "non-existent-id");
|
|
264
|
+
assert.equal(result, null);
|
|
265
|
+
});
|
|
266
|
+
it("reads session content (body) from session.md", async () => {
|
|
267
|
+
// Create a session directory with custom content in session.md
|
|
268
|
+
const sessionId = "2025-12-23T10-00-00";
|
|
269
|
+
const sessionPath = join(testDir, sessionId);
|
|
270
|
+
await mkdir(sessionPath, { recursive: true });
|
|
271
|
+
const sessionContent = `---
|
|
272
|
+
id: ${sessionId}
|
|
273
|
+
started: 2025-12-23T10:00:00.000Z
|
|
274
|
+
runtime:
|
|
275
|
+
hostname: test
|
|
276
|
+
executionMode: interactive
|
|
277
|
+
triggerType: manual
|
|
278
|
+
workingDir: /test
|
|
279
|
+
goal: "Work on feature X"
|
|
280
|
+
---
|
|
281
|
+
|
|
282
|
+
# Session Log
|
|
283
|
+
|
|
284
|
+
Session started.
|
|
285
|
+
|
|
286
|
+
## Task Progress
|
|
287
|
+
|
|
288
|
+
- Investigated the issue
|
|
289
|
+
- Found the root cause in src/lib/foo.ts
|
|
290
|
+
- Started implementing the fix
|
|
291
|
+
|
|
292
|
+
## Next Steps
|
|
293
|
+
|
|
294
|
+
- Complete the implementation
|
|
295
|
+
- Add tests
|
|
296
|
+
`;
|
|
297
|
+
await writeFile(join(sessionPath, "session.md"), sessionContent, "utf-8");
|
|
298
|
+
const read = await readSession(testDir, sessionId);
|
|
299
|
+
assert.ok(read);
|
|
300
|
+
assert.equal(read.id, sessionId);
|
|
301
|
+
assert.equal(read.metadata.goal, "Work on feature X");
|
|
302
|
+
assert.ok(read.content);
|
|
303
|
+
assert.ok(read.content.includes("# Session Log"));
|
|
304
|
+
assert.ok(read.content.includes("Investigated the issue"));
|
|
305
|
+
assert.ok(read.content.includes("Found the root cause"));
|
|
306
|
+
assert.ok(read.content.includes("Complete the implementation"));
|
|
307
|
+
});
|
|
308
|
+
it("returns undefined content for session with empty body", async () => {
|
|
309
|
+
const created = await createSession({
|
|
310
|
+
sessionsDir: testDir,
|
|
311
|
+
runtime: {
|
|
312
|
+
hostname: "test",
|
|
313
|
+
executionMode: "headless",
|
|
314
|
+
triggerType: "manual",
|
|
315
|
+
workingDir: "/test",
|
|
316
|
+
},
|
|
317
|
+
});
|
|
318
|
+
// Overwrite with empty body
|
|
319
|
+
const emptyContent = `---
|
|
320
|
+
id: ${created.id}
|
|
321
|
+
started: 2025-12-23T10:00:00.000Z
|
|
322
|
+
runtime:
|
|
323
|
+
hostname: test
|
|
324
|
+
executionMode: headless
|
|
325
|
+
triggerType: manual
|
|
326
|
+
workingDir: /test
|
|
327
|
+
---
|
|
328
|
+
|
|
329
|
+
`;
|
|
330
|
+
await writeFile(created.sessionFile, emptyContent, "utf-8");
|
|
331
|
+
const read = await readSession(testDir, created.id);
|
|
332
|
+
assert.ok(read);
|
|
333
|
+
assert.equal(read.content, undefined);
|
|
334
|
+
});
|
|
335
|
+
});
|
|
336
|
+
//# sourceMappingURL=session.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session.test.js","sourceRoot":"","sources":["../../src/lib/session.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -17,10 +17,14 @@ export interface ChannelMetadata {
|
|
|
17
17
|
export interface ChannelMessageMeta {
|
|
18
18
|
/** Who sent the message (e.g., workflow/process-inbox, @tnez) */
|
|
19
19
|
from?: string;
|
|
20
|
+
/** Hostname where the message originated */
|
|
21
|
+
host?: string;
|
|
20
22
|
/** Unique run identifier if from a workflow */
|
|
21
23
|
run_id?: string;
|
|
22
24
|
/** Tags for categorization */
|
|
23
25
|
tags?: string[];
|
|
26
|
+
/** Thread ID for grouping related messages */
|
|
27
|
+
thread_id?: string;
|
|
24
28
|
}
|
|
25
29
|
/**
|
|
26
30
|
* A message in a channel
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"channel.d.ts","sourceRoot":"","sources":["../../../src/lib/types/channel.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,2CAA2C;IAC3C,IAAI,EAAE,MAAM,CAAC;IACb,2CAA2C;IAC3C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,8BAA8B;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,mCAAmC;IACnC,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,iEAAiE;IACjE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,+CAA+C;IAC/C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,8BAA8B;IAC9B,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"channel.d.ts","sourceRoot":"","sources":["../../../src/lib/types/channel.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,2CAA2C;IAC3C,IAAI,EAAE,MAAM,CAAC;IACb,2CAA2C;IAC3C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,8BAA8B;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,mCAAmC;IACnC,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,iEAAiE;IACjE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,4CAA4C;IAC5C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,+CAA+C;IAC/C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,8BAA8B;IAC9B,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,8CAA8C;IAC9C,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,sCAAsC;IACtC,EAAE,EAAE,MAAM,CAAC;IACX,iCAAiC;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,uBAAuB;IACvB,IAAI,EAAE,kBAAkB,CAAC;IACzB,iDAAiD;IACjD,OAAO,CAAC,EAAE,YAAY,EAAE,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,oCAAoC;IACpC,EAAE,EAAE,MAAM,CAAC;IACX,+BAA+B;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,qBAAqB;IACrB,IAAI,EAAE,kBAAkB,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,OAAO;IACtB,mEAAmE;IACnE,IAAI,EAAE,MAAM,CAAC;IACb,uBAAuB;IACvB,QAAQ,EAAE,eAAe,CAAC;IAC1B,8BAA8B;IAC9B,QAAQ,EAAE,cAAc,EAAE,CAAC;CAC5B"}
|
|
@@ -40,6 +40,8 @@ export interface Persona extends PersonaFrontmatter {
|
|
|
40
40
|
prompt?: string;
|
|
41
41
|
/** Parent persona path if this is a child (for tracking) */
|
|
42
42
|
parent?: string;
|
|
43
|
+
/** Whether this is an internal (bundled) persona */
|
|
44
|
+
internal?: boolean;
|
|
43
45
|
}
|
|
44
46
|
/**
|
|
45
47
|
* Resolved commands for each execution mode
|
|
@@ -50,6 +52,51 @@ export interface ResolvedCommands {
|
|
|
50
52
|
/** Command for interactive/manual execution (undefined = not supported) */
|
|
51
53
|
interactive?: string[];
|
|
52
54
|
}
|
|
55
|
+
/**
|
|
56
|
+
* MCP server configuration (matches Claude's mcp.json format)
|
|
57
|
+
*/
|
|
58
|
+
export interface McpServerConfig {
|
|
59
|
+
command: string;
|
|
60
|
+
args?: string[];
|
|
61
|
+
env?: Record<string, string>;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* MCP configuration (matches Claude's mcp.json format)
|
|
65
|
+
*/
|
|
66
|
+
export interface McpConfig {
|
|
67
|
+
mcpServers: Record<string, McpServerConfig>;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Hook command configuration (matches Claude Code's settings format)
|
|
71
|
+
*/
|
|
72
|
+
export interface HookCommand {
|
|
73
|
+
type: "command" | "prompt";
|
|
74
|
+
command?: string;
|
|
75
|
+
prompt?: string;
|
|
76
|
+
timeout?: number;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Hook configuration for a specific event
|
|
80
|
+
*/
|
|
81
|
+
export interface HookEventConfig {
|
|
82
|
+
matcher?: string;
|
|
83
|
+
hooks: HookCommand[];
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Claude Code hooks configuration (matches Claude Code's settings format)
|
|
87
|
+
*/
|
|
88
|
+
export interface HooksConfig {
|
|
89
|
+
Stop?: HookEventConfig[];
|
|
90
|
+
SessionEnd?: HookEventConfig[];
|
|
91
|
+
SessionStart?: HookEventConfig[];
|
|
92
|
+
PreToolUse?: HookEventConfig[];
|
|
93
|
+
PostToolUse?: HookEventConfig[];
|
|
94
|
+
UserPromptSubmit?: HookEventConfig[];
|
|
95
|
+
Notification?: HookEventConfig[];
|
|
96
|
+
SubagentStop?: HookEventConfig[];
|
|
97
|
+
PreCompact?: HookEventConfig[];
|
|
98
|
+
PermissionRequest?: HookEventConfig[];
|
|
99
|
+
}
|
|
53
100
|
/**
|
|
54
101
|
* Resolved persona with all inheritance applied and arrays merged
|
|
55
102
|
*/
|
|
@@ -68,5 +115,9 @@ export interface ResolvedPersona {
|
|
|
68
115
|
path: string;
|
|
69
116
|
/** Inheritance chain (root to leaf) */
|
|
70
117
|
inheritanceChain: string[];
|
|
118
|
+
/** Merged MCP configuration (from mcp.json files in inheritance chain) */
|
|
119
|
+
mcpConfig?: McpConfig;
|
|
120
|
+
/** Merged hooks configuration (from hooks.json files in inheritance chain) */
|
|
121
|
+
hooksConfig?: HooksConfig;
|
|
71
122
|
}
|
|
72
123
|
//# sourceMappingURL=persona.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"persona.d.ts","sourceRoot":"","sources":["../../../src/lib/types/persona.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,MAAM,EAAE,CAAC;AAE5C;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,mEAAmE;IACnE,QAAQ,CAAC,EAAE,WAAW,CAAC;IACvB,iEAAiE;IACjE,WAAW,CAAC,EAAE,WAAW,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,yCAAyC;IACzC,IAAI,EAAE,MAAM,CAAC;IACb,iCAAiC;IACjC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;OAIG;IACH,GAAG,CAAC,EAAE,WAAW,GAAG,YAAY,CAAC;IACjC,wDAAwD;IACxD,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,yDAAyD;IACzD,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,OAAQ,SAAQ,kBAAkB;IACjD,oCAAoC;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,mEAAmE;IACnE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,4DAA4D;IAC5D,MAAM,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"persona.d.ts","sourceRoot":"","sources":["../../../src/lib/types/persona.ts"],"names":[],"mappings":"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"}
|
|
@@ -74,6 +74,15 @@ export interface GitHubTrigger {
|
|
|
74
74
|
labels?: string[];
|
|
75
75
|
};
|
|
76
76
|
}
|
|
77
|
+
/**
|
|
78
|
+
* Channel message trigger - run workflow when message posted to a channel
|
|
79
|
+
*/
|
|
80
|
+
export interface ChannelTrigger {
|
|
81
|
+
/** Channel name to watch (e.g., "#issues", "#requests") */
|
|
82
|
+
channel: string;
|
|
83
|
+
/** Optional input overrides for channel-triggered runs */
|
|
84
|
+
inputs?: TriggerInputOverride;
|
|
85
|
+
}
|
|
77
86
|
/**
|
|
78
87
|
* All workflow triggers
|
|
79
88
|
*/
|
|
@@ -92,5 +101,7 @@ export interface WorkflowTriggers {
|
|
|
92
101
|
git?: GitTrigger;
|
|
93
102
|
/** GitHub event trigger */
|
|
94
103
|
github?: GitHubTrigger;
|
|
104
|
+
/** Channel message trigger */
|
|
105
|
+
channel?: ChannelTrigger;
|
|
95
106
|
}
|
|
96
107
|
//# sourceMappingURL=triggers.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"triggers.d.ts","sourceRoot":"","sources":["../../../src/lib/types/triggers.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;CAChD;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,4CAA4C;IAC5C,IAAI,EAAE,MAAM,CAAC;IACb,iDAAiD;IACjD,MAAM,CAAC,EAAE,oBAAoB,CAAC;CAC/B;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,sDAAsD;IACtD,MAAM,CAAC,EAAE,MAAM,CACb,MAAM,EACN;QACE,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;QACpC,QAAQ,CAAC,EAAE,OAAO,CAAC;KACpB,CACF,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,mDAAmD;IACnD,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,gCAAgC;IAChC,MAAM,CAAC,EAAE,CAAC,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC,EAAE,CAAC;CAC7C;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,wCAAwC;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,wDAAwD;IACxD,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,gCAAgC;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,sCAAsC;IACtC,MAAM,CAAC,EAAE,CAAC,SAAS,GAAG,SAAS,GAAG,KAAK,CAAC,EAAE,CAAC;CAC5C;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,+BAA+B;IAC/B,MAAM,EAAE,CAAC,aAAa,GAAG,YAAY,GAAG,UAAU,CAAC,EAAE,CAAC;IACtD,oBAAoB;IACpB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,yBAAyB;IACzB,MAAM,EAAE,CAAC,cAAc,GAAG,QAAQ,GAAG,MAAM,GAAG,SAAS,CAAC,EAAE,CAAC;IAC3D,sCAAsC;IACtC,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,yBAAyB;IACzB,OAAO,CAAC,EAAE;QACR,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;QACpB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;KACnB,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,2BAA2B;IAC3B,QAAQ,CAAC,EAAE,eAAe,EAAE,CAAC;IAC7B,+BAA+B;IAC/B,MAAM,CAAC,EAAE,OAAO,GAAG,aAAa,CAAC;IACjC,iCAAiC;IACjC,WAAW,CAAC,EAAE,iBAAiB,CAAC;IAChC,sBAAsB;IACtB,OAAO,CAAC,EAAE,cAAc,CAAC;IACzB,kCAAkC;IAClC,iBAAiB,CAAC,EAAE,uBAAuB,CAAC;IAC5C,wBAAwB;IACxB,GAAG,CAAC,EAAE,UAAU,CAAC;IACjB,2BAA2B;IAC3B,MAAM,CAAC,EAAE,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"triggers.d.ts","sourceRoot":"","sources":["../../../src/lib/types/triggers.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;CAChD;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,4CAA4C;IAC5C,IAAI,EAAE,MAAM,CAAC;IACb,iDAAiD;IACjD,MAAM,CAAC,EAAE,oBAAoB,CAAC;CAC/B;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,sDAAsD;IACtD,MAAM,CAAC,EAAE,MAAM,CACb,MAAM,EACN;QACE,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;QACpC,QAAQ,CAAC,EAAE,OAAO,CAAC;KACpB,CACF,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,mDAAmD;IACnD,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,gCAAgC;IAChC,MAAM,CAAC,EAAE,CAAC,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC,EAAE,CAAC;CAC7C;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,wCAAwC;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,wDAAwD;IACxD,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,gCAAgC;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,sCAAsC;IACtC,MAAM,CAAC,EAAE,CAAC,SAAS,GAAG,SAAS,GAAG,KAAK,CAAC,EAAE,CAAC;CAC5C;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,+BAA+B;IAC/B,MAAM,EAAE,CAAC,aAAa,GAAG,YAAY,GAAG,UAAU,CAAC,EAAE,CAAC;IACtD,oBAAoB;IACpB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,yBAAyB;IACzB,MAAM,EAAE,CAAC,cAAc,GAAG,QAAQ,GAAG,MAAM,GAAG,SAAS,CAAC,EAAE,CAAC;IAC3D,sCAAsC;IACtC,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,yBAAyB;IACzB,OAAO,CAAC,EAAE;QACR,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;QACpB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;KACnB,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,2DAA2D;IAC3D,OAAO,EAAE,MAAM,CAAC;IAChB,0DAA0D;IAC1D,MAAM,CAAC,EAAE,oBAAoB,CAAC;CAC/B;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,2BAA2B;IAC3B,QAAQ,CAAC,EAAE,eAAe,EAAE,CAAC;IAC7B,+BAA+B;IAC/B,MAAM,CAAC,EAAE,OAAO,GAAG,aAAa,CAAC;IACjC,iCAAiC;IACjC,WAAW,CAAC,EAAE,iBAAiB,CAAC;IAChC,sBAAsB;IACtB,OAAO,CAAC,EAAE,cAAc,CAAC;IACzB,kCAAkC;IAClC,iBAAiB,CAAC,EAAE,uBAAuB,CAAC;IAC5C,wBAAwB;IACxB,GAAG,CAAC,EAAE,UAAU,CAAC;IACjB,2BAA2B;IAC3B,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,8BAA8B;IAC9B,OAAO,CAAC,EAAE,cAAc,CAAC;CAC1B"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Package information from package.json
|
|
3
|
+
*/
|
|
4
|
+
export interface PackageInfo {
|
|
5
|
+
name: string;
|
|
6
|
+
version: string;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Get package information synchronously (for CLI startup)
|
|
10
|
+
* Caches the result after first read
|
|
11
|
+
*/
|
|
12
|
+
export declare function getPackageInfoSync(): PackageInfo;
|
|
13
|
+
/**
|
|
14
|
+
* Get package information (name and version)
|
|
15
|
+
* Caches the result after first read
|
|
16
|
+
*/
|
|
17
|
+
export declare function getPackageInfo(): Promise<PackageInfo>;
|
|
18
|
+
/**
|
|
19
|
+
* Get the package version synchronously
|
|
20
|
+
*/
|
|
21
|
+
export declare function getVersionSync(): string;
|
|
22
|
+
/**
|
|
23
|
+
* Get the package version
|
|
24
|
+
*/
|
|
25
|
+
export declare function getVersion(): Promise<string>;
|
|
26
|
+
//# sourceMappingURL=version.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/lib/version.ts"],"names":[],"mappings":"AAKA;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAeD;;;GAGG;AACH,wBAAgB,kBAAkB,IAAI,WAAW,CAahD;AAED;;;GAGG;AACH,wBAAsB,cAAc,IAAI,OAAO,CAAC,WAAW,CAAC,CAa3D;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI,MAAM,CAEvC;AAED;;GAEG;AACH,wBAAsB,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC,CAGlD"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { readFile } from "node:fs/promises";
|
|
2
|
+
import { readFileSync } from "node:fs";
|
|
3
|
+
import { dirname, join } from "node:path";
|
|
4
|
+
import { fileURLToPath } from "node:url";
|
|
5
|
+
let cachedInfo = null;
|
|
6
|
+
/**
|
|
7
|
+
* Get the path to the package.json
|
|
8
|
+
*/
|
|
9
|
+
function getPackageJsonPath() {
|
|
10
|
+
const currentFile = fileURLToPath(import.meta.url);
|
|
11
|
+
const libDir = dirname(currentFile);
|
|
12
|
+
// From dist/lib or src/lib -> root
|
|
13
|
+
const packageRoot = dirname(dirname(libDir));
|
|
14
|
+
return join(packageRoot, "package.json");
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Get package information synchronously (for CLI startup)
|
|
18
|
+
* Caches the result after first read
|
|
19
|
+
*/
|
|
20
|
+
export function getPackageInfoSync() {
|
|
21
|
+
if (cachedInfo)
|
|
22
|
+
return cachedInfo;
|
|
23
|
+
const packagePath = getPackageJsonPath();
|
|
24
|
+
const content = readFileSync(packagePath, "utf-8");
|
|
25
|
+
const pkg = JSON.parse(content);
|
|
26
|
+
cachedInfo = {
|
|
27
|
+
name: pkg.name,
|
|
28
|
+
version: pkg.version,
|
|
29
|
+
};
|
|
30
|
+
return cachedInfo;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Get package information (name and version)
|
|
34
|
+
* Caches the result after first read
|
|
35
|
+
*/
|
|
36
|
+
export async function getPackageInfo() {
|
|
37
|
+
if (cachedInfo)
|
|
38
|
+
return cachedInfo;
|
|
39
|
+
const packagePath = getPackageJsonPath();
|
|
40
|
+
const content = await readFile(packagePath, "utf-8");
|
|
41
|
+
const pkg = JSON.parse(content);
|
|
42
|
+
cachedInfo = {
|
|
43
|
+
name: pkg.name,
|
|
44
|
+
version: pkg.version,
|
|
45
|
+
};
|
|
46
|
+
return cachedInfo;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Get the package version synchronously
|
|
50
|
+
*/
|
|
51
|
+
export function getVersionSync() {
|
|
52
|
+
return getPackageInfoSync().version;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Get the package version
|
|
56
|
+
*/
|
|
57
|
+
export async function getVersion() {
|
|
58
|
+
const info = await getPackageInfo();
|
|
59
|
+
return info.version;
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=version.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/lib/version.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAUzC,IAAI,UAAU,GAAuB,IAAI,CAAC;AAE1C;;GAEG;AACH,SAAS,kBAAkB;IACzB,MAAM,WAAW,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACnD,MAAM,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IACpC,mCAAmC;IACnC,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;IAC7C,OAAO,IAAI,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;AAC3C,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,kBAAkB;IAChC,IAAI,UAAU;QAAE,OAAO,UAAU,CAAC;IAElC,MAAM,WAAW,GAAG,kBAAkB,EAAE,CAAC;IACzC,MAAM,OAAO,GAAG,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IACnD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAsC,CAAC;IAErE,UAAU,GAAG;QACX,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,OAAO,EAAE,GAAG,CAAC,OAAO;KACrB,CAAC;IAEF,OAAO,UAAU,CAAC;AACpB,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc;IAClC,IAAI,UAAU;QAAE,OAAO,UAAU,CAAC;IAElC,MAAM,WAAW,GAAG,kBAAkB,EAAE,CAAC;IACzC,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IACrD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAsC,CAAC;IAErE,UAAU,GAAG;QACX,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,OAAO,EAAE,GAAG,CAAC,OAAO;KACrB,CAAC;IAEF,OAAO,UAAU,CAAC;AACpB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc;IAC5B,OAAO,kBAAkB,EAAE,CAAC,OAAO,CAAC;AACtC,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU;IAC9B,MAAM,IAAI,GAAG,MAAM,cAAc,EAAE,CAAC;IACpC,OAAO,IAAI,CAAC,OAAO,CAAC;AACtB,CAAC"}
|