ai-hist 0.3.1 → 0.3.3
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 +12 -3
- package/dist/index.d.ts +97 -7
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +526 -43
- package/dist/index.js.map +1 -1
- package/dist/jsonl-sources.d.ts +1 -0
- package/dist/jsonl-sources.d.ts.map +1 -1
- package/dist/jsonl-sources.js +3 -0
- package/dist/jsonl-sources.js.map +1 -1
- package/dist/mcp-server.js +188 -13
- package/dist/mcp-server.js.map +1 -1
- package/dist/mcp-smoke.test.js +279 -8
- package/dist/mcp-smoke.test.js.map +1 -1
- package/package.json +3 -3
package/dist/mcp-smoke.test.js
CHANGED
|
@@ -1,10 +1,88 @@
|
|
|
1
1
|
import assert from 'node:assert/strict';
|
|
2
2
|
import { spawn } from 'node:child_process';
|
|
3
|
-
import { mkdtemp, mkdir, writeFile } from 'node:fs/promises';
|
|
3
|
+
import { mkdtemp, mkdir, realpath, stat, writeFile } from 'node:fs/promises';
|
|
4
4
|
import { tmpdir } from 'node:os';
|
|
5
5
|
import { join } from 'node:path';
|
|
6
6
|
import { test } from 'node:test';
|
|
7
|
+
import initSqlJs from 'sql.js';
|
|
7
8
|
import { openAiHist } from './index.js';
|
|
9
|
+
test('SDK projectScope restricts all history and trajectory reads', async () => {
|
|
10
|
+
const root = await mkdtemp(join(tmpdir(), 'ai-hist-scope-'));
|
|
11
|
+
const dbPath = join(root, 'history.db');
|
|
12
|
+
await writeScopeFixtureDb(dbPath);
|
|
13
|
+
const hist = await openAiHist({ dbPath, projectScope: '/work/app' });
|
|
14
|
+
try {
|
|
15
|
+
assert.equal(hist.projectScope, '/work/app');
|
|
16
|
+
assert.deepEqual(hist.recent({ limit: 10 }).map((entry) => entry.prompt), ['scoped child prompt', 'scoped root prompt']);
|
|
17
|
+
assert.deepEqual(hist.recent({ limit: 10, project: '/work/app/pkg' }).map((entry) => entry.prompt), ['scoped child prompt']);
|
|
18
|
+
assert.deepEqual(hist.recent({ limit: 10, project: '/work/other' }), []);
|
|
19
|
+
assert.deepEqual(hist.search('prompt', { limit: 10 }).map((entry) => entry.prompt), ['scoped child prompt', 'scoped root prompt']);
|
|
20
|
+
assert.deepEqual(hist.getSession('shared').map((entry) => entry.prompt), ['scoped root prompt', 'scoped child prompt']);
|
|
21
|
+
assert.equal(hist.getEntry(3), null);
|
|
22
|
+
assert.deepEqual(hist.getInTimeWindow(2_000, 2_000).map((entry) => entry.prompt), ['scoped root prompt', 'scoped child prompt']);
|
|
23
|
+
assert.equal(hist.stats().total, 2);
|
|
24
|
+
assert.deepEqual(hist.searchTrajectories('decision', { limit: 10 }).map((entry) => entry.id), ['scoped-run']);
|
|
25
|
+
}
|
|
26
|
+
finally {
|
|
27
|
+
hist.close();
|
|
28
|
+
}
|
|
29
|
+
const rootScopedHist = await openAiHist({ dbPath, projectScope: '/' });
|
|
30
|
+
try {
|
|
31
|
+
assert.deepEqual(rootScopedHist.recent({ limit: 10 }).map((entry) => entry.prompt), ['outside prompt', 'scoped child prompt', 'scoped root prompt']);
|
|
32
|
+
assert.deepEqual(rootScopedHist.searchTrajectories('decision', { limit: 10 }).map((entry) => entry.id), ['outside-run', 'scoped-run']);
|
|
33
|
+
}
|
|
34
|
+
finally {
|
|
35
|
+
rootScopedHist.close();
|
|
36
|
+
}
|
|
37
|
+
});
|
|
38
|
+
test('SDK tags sessions, filters reads by tag, and persists SQLite writes', async () => {
|
|
39
|
+
const root = await mkdtemp(join(tmpdir(), 'ai-hist-tags-'));
|
|
40
|
+
const dbPath = join(root, 'history.db');
|
|
41
|
+
await writeScopeFixtureDb(dbPath);
|
|
42
|
+
const hist = await openAiHist({ dbPath });
|
|
43
|
+
try {
|
|
44
|
+
const tagged = hist.tagSession('shared', 'Release Work', { source: 'claude', color: 'blue' });
|
|
45
|
+
assert.equal(tagged.length, 1);
|
|
46
|
+
assert.deepEqual(hist.search('prompt', { tag: 'release work', limit: 10 }).map((entry) => entry.prompt), ['scoped root prompt']);
|
|
47
|
+
assert.equal(hist.listTags({ includeSessions: true })[0].sessions?.[0].sessionId, 'shared');
|
|
48
|
+
}
|
|
49
|
+
finally {
|
|
50
|
+
hist.close();
|
|
51
|
+
}
|
|
52
|
+
const reopened = await openAiHist({ dbPath });
|
|
53
|
+
try {
|
|
54
|
+
assert.deepEqual(reopened.recent({ tag: 'release work', limit: 10 }).map((entry) => entry.prompt), ['scoped root prompt']);
|
|
55
|
+
assert.equal(reopened.untagSession('shared', 'release work', { source: 'claude' }), 1);
|
|
56
|
+
assert.deepEqual(reopened.recent({ tag: 'release work', limit: 10 }), []);
|
|
57
|
+
}
|
|
58
|
+
finally {
|
|
59
|
+
reopened.close();
|
|
60
|
+
}
|
|
61
|
+
});
|
|
62
|
+
test('SDK projectScope restricts tag counts and included tagged sessions', async () => {
|
|
63
|
+
const root = await mkdtemp(join(tmpdir(), 'ai-hist-tag-scope-'));
|
|
64
|
+
const dbPath = join(root, 'history.db');
|
|
65
|
+
await writeScopeFixtureDb(dbPath);
|
|
66
|
+
const unscoped = await openAiHist({ dbPath });
|
|
67
|
+
try {
|
|
68
|
+
assert.equal(unscoped.tagSession('shared', 'Scoped Tag', { source: 'claude' }).length, 1);
|
|
69
|
+
assert.equal(unscoped.tagSession('shared', 'Scoped Tag', { source: 'cursor' }).length, 1);
|
|
70
|
+
}
|
|
71
|
+
finally {
|
|
72
|
+
unscoped.close();
|
|
73
|
+
}
|
|
74
|
+
const scoped = await openAiHist({ dbPath, projectScope: '/work/app' });
|
|
75
|
+
try {
|
|
76
|
+
const tags = scoped.listTags({ tag: 'scoped tag', includeSessions: true });
|
|
77
|
+
assert.equal(tags.length, 1);
|
|
78
|
+
assert.equal(tags[0].sessionCount, 1);
|
|
79
|
+
assert.deepEqual(tags[0].sessions?.map((session) => session.source), ['claude']);
|
|
80
|
+
assert.deepEqual(scoped.recent({ tag: 'scoped tag', limit: 10 }).map((entry) => entry.prompt), ['scoped root prompt']);
|
|
81
|
+
}
|
|
82
|
+
finally {
|
|
83
|
+
scoped.close();
|
|
84
|
+
}
|
|
85
|
+
});
|
|
8
86
|
test('SDK fallback ingests compacted per-run trajectories from TRAJECTORY_ROOT', async () => {
|
|
9
87
|
const root = await mkdtemp(join(tmpdir(), 'ai-hist-trajectory-'));
|
|
10
88
|
const compacted = join(root, 'planner', 'compacted');
|
|
@@ -58,12 +136,76 @@ test('SDK fallback ingests compacted per-run trajectories from TRAJECTORY_ROOT',
|
|
|
58
136
|
process.env.AI_HIST_DB = previousDb;
|
|
59
137
|
}
|
|
60
138
|
});
|
|
139
|
+
test('SDK fallback ingests OpenCode rows committed in WAL files', async () => {
|
|
140
|
+
const root = await mkdtemp(join(tmpdir(), 'ai-hist-opencode-wal-'));
|
|
141
|
+
const dbPath = join(root, 'opencode.db');
|
|
142
|
+
const readyPath = join(root, 'ready');
|
|
143
|
+
const child = spawn('python3', [
|
|
144
|
+
'-c',
|
|
145
|
+
`
|
|
146
|
+
import json, pathlib, sqlite3, time
|
|
147
|
+
db = pathlib.Path(${JSON.stringify(dbPath)})
|
|
148
|
+
ready = pathlib.Path(${JSON.stringify(readyPath)})
|
|
149
|
+
conn = sqlite3.connect(db)
|
|
150
|
+
conn.execute("PRAGMA journal_mode=WAL")
|
|
151
|
+
conn.execute("PRAGMA wal_autocheckpoint=0")
|
|
152
|
+
conn.execute("CREATE TABLE session (id TEXT PRIMARY KEY, directory TEXT, time_created INTEGER)")
|
|
153
|
+
conn.execute("CREATE TABLE message (id TEXT PRIMARY KEY, session_id TEXT, time_created INTEGER, data TEXT)")
|
|
154
|
+
conn.execute("CREATE TABLE part (id TEXT PRIMARY KEY, message_id TEXT, session_id TEXT, time_created INTEGER, data TEXT)")
|
|
155
|
+
conn.execute("INSERT INTO session VALUES ('oc-ts-wal', '/tmp/opencode-ts', 1700000000000)")
|
|
156
|
+
conn.execute("INSERT INTO message VALUES ('msg-ts-wal', 'oc-ts-wal', 1700000001000, ?)", (json.dumps({"role":"user"}),))
|
|
157
|
+
conn.execute("INSERT INTO part VALUES ('part-ts-wal', 'msg-ts-wal', 'oc-ts-wal', 1700000002000, ?)", (json.dumps({"type":"text","text":"ts wal opencode prompt"}),))
|
|
158
|
+
conn.commit()
|
|
159
|
+
live = sqlite3.connect(db)
|
|
160
|
+
assert live.execute("SELECT COUNT(*) FROM part").fetchone()[0] == 1
|
|
161
|
+
live.close()
|
|
162
|
+
ready.write_text("ready")
|
|
163
|
+
time.sleep(60)
|
|
164
|
+
`,
|
|
165
|
+
], { stdio: ['ignore', 'ignore', 'pipe'] });
|
|
166
|
+
const stderr = [];
|
|
167
|
+
child.stderr.on('data', (chunk) => stderr.push(chunk));
|
|
168
|
+
const previousDb = process.env.AI_HIST_DB;
|
|
169
|
+
const previousOpenCode = process.env.OPENCODE_DB;
|
|
170
|
+
const previousTrajectory = process.env.TRAJECTORY_ROOT;
|
|
171
|
+
process.env.AI_HIST_DB = join(root, 'missing-ai-hist.db');
|
|
172
|
+
process.env.OPENCODE_DB = dbPath;
|
|
173
|
+
process.env.TRAJECTORY_ROOT = join(root, 'missing-trajectories');
|
|
174
|
+
try {
|
|
175
|
+
await waitForFile(readyPath, () => Buffer.concat(stderr).toString('utf8'));
|
|
176
|
+
const hist = await openAiHist({ dbPath: process.env.AI_HIST_DB });
|
|
177
|
+
try {
|
|
178
|
+
assert.deepEqual(hist.search('ts wal opencode', { source: 'opencode', limit: 5 }).map((entry) => entry.prompt), ['ts wal opencode prompt']);
|
|
179
|
+
}
|
|
180
|
+
finally {
|
|
181
|
+
hist.close();
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
finally {
|
|
185
|
+
child.kill();
|
|
186
|
+
if (previousDb === undefined)
|
|
187
|
+
delete process.env.AI_HIST_DB;
|
|
188
|
+
else
|
|
189
|
+
process.env.AI_HIST_DB = previousDb;
|
|
190
|
+
if (previousOpenCode === undefined)
|
|
191
|
+
delete process.env.OPENCODE_DB;
|
|
192
|
+
else
|
|
193
|
+
process.env.OPENCODE_DB = previousOpenCode;
|
|
194
|
+
if (previousTrajectory === undefined)
|
|
195
|
+
delete process.env.TRAJECTORY_ROOT;
|
|
196
|
+
else
|
|
197
|
+
process.env.TRAJECTORY_ROOT = previousTrajectory;
|
|
198
|
+
}
|
|
199
|
+
});
|
|
61
200
|
test('MCP server exposes history and trajectory tools over stdio', async () => {
|
|
62
|
-
const root = await mkdtemp(join(tmpdir(), 'ai-hist-mcp-'));
|
|
63
|
-
const
|
|
201
|
+
const root = await realpath(await mkdtemp(join(tmpdir(), 'ai-hist-mcp-')));
|
|
202
|
+
const dbPath = join(root, 'history.db');
|
|
203
|
+
await writeScopeFixtureDb(dbPath);
|
|
204
|
+
const child = spawn(process.execPath, [new URL('./mcp-server.js', import.meta.url).pathname, '--project', '--project-path=.'], {
|
|
205
|
+
cwd: root,
|
|
64
206
|
env: {
|
|
65
207
|
...process.env,
|
|
66
|
-
AI_HIST_DB:
|
|
208
|
+
AI_HIST_DB: dbPath,
|
|
67
209
|
TRAJECTORY_ROOT: root,
|
|
68
210
|
},
|
|
69
211
|
stdio: ['pipe', 'pipe', 'pipe'],
|
|
@@ -71,9 +213,11 @@ test('MCP server exposes history and trajectory tools over stdio', async () => {
|
|
|
71
213
|
const stderr = [];
|
|
72
214
|
child.stderr.on('data', (chunk) => stderr.push(chunk));
|
|
73
215
|
try {
|
|
74
|
-
const tools = await new Promise((resolve, reject) => {
|
|
75
|
-
const timer = setTimeout(() => reject(new Error('timed out waiting for MCP
|
|
216
|
+
const { tools, stats } = await new Promise((resolve, reject) => {
|
|
217
|
+
const timer = setTimeout(() => reject(new Error('timed out waiting for MCP responses')), 5000);
|
|
76
218
|
let buffer = '';
|
|
219
|
+
let tools = null;
|
|
220
|
+
let stats = null;
|
|
77
221
|
child.stdout.on('data', (chunk) => {
|
|
78
222
|
buffer += chunk.toString('utf8');
|
|
79
223
|
while (true) {
|
|
@@ -91,9 +235,15 @@ test('MCP server exposes history and trajectory tools over stdio', async () => {
|
|
|
91
235
|
return;
|
|
92
236
|
}
|
|
93
237
|
if (message.id === 2) {
|
|
238
|
+
tools = new Set((message.result?.tools ?? []).map((tool) => tool.name));
|
|
239
|
+
}
|
|
240
|
+
if (message.id === 3) {
|
|
241
|
+
const text = message.result?.content?.find((item) => item.type === 'text')?.text ?? '{}';
|
|
242
|
+
stats = JSON.parse(text);
|
|
243
|
+
}
|
|
244
|
+
if (tools && stats) {
|
|
94
245
|
clearTimeout(timer);
|
|
95
|
-
resolve(
|
|
96
|
-
return;
|
|
246
|
+
resolve({ tools, stats });
|
|
97
247
|
}
|
|
98
248
|
}
|
|
99
249
|
});
|
|
@@ -128,6 +278,12 @@ test('MCP server exposes history and trajectory tools over stdio', async () => {
|
|
|
128
278
|
method: 'tools/list',
|
|
129
279
|
params: {},
|
|
130
280
|
});
|
|
281
|
+
writeJsonRpc(child.stdin, {
|
|
282
|
+
jsonrpc: '2.0',
|
|
283
|
+
id: 3,
|
|
284
|
+
method: 'tools/call',
|
|
285
|
+
params: { name: 'stats', arguments: {} },
|
|
286
|
+
});
|
|
131
287
|
});
|
|
132
288
|
for (const name of [
|
|
133
289
|
'search_history',
|
|
@@ -135,11 +291,16 @@ test('MCP server exposes history and trajectory tools over stdio', async () => {
|
|
|
135
291
|
'get_session',
|
|
136
292
|
'get_context',
|
|
137
293
|
'stats',
|
|
294
|
+
'tag_session',
|
|
295
|
+
'untag_session',
|
|
296
|
+
'list_tags',
|
|
138
297
|
'search_trajectories',
|
|
139
298
|
'why_for_task',
|
|
299
|
+
'get_handoff',
|
|
140
300
|
]) {
|
|
141
301
|
assert.ok(tools.has(name), `missing MCP tool ${name}`);
|
|
142
302
|
}
|
|
303
|
+
assert.equal(stats.projectScope, root);
|
|
143
304
|
}
|
|
144
305
|
finally {
|
|
145
306
|
child.kill();
|
|
@@ -148,4 +309,114 @@ test('MCP server exposes history and trajectory tools over stdio', async () => {
|
|
|
148
309
|
function writeJsonRpc(stdin, payload) {
|
|
149
310
|
stdin.write(`${JSON.stringify(payload)}\n`);
|
|
150
311
|
}
|
|
312
|
+
async function waitForFile(path, getError) {
|
|
313
|
+
const deadline = Date.now() + 5_000;
|
|
314
|
+
while (Date.now() < deadline) {
|
|
315
|
+
try {
|
|
316
|
+
await stat(path);
|
|
317
|
+
return;
|
|
318
|
+
}
|
|
319
|
+
catch {
|
|
320
|
+
await new Promise((resolve) => setTimeout(resolve, 50));
|
|
321
|
+
}
|
|
322
|
+
}
|
|
323
|
+
throw new Error(`timed out waiting for ${path}: ${getError()}`);
|
|
324
|
+
}
|
|
325
|
+
async function writeScopeFixtureDb(dbPath) {
|
|
326
|
+
const SQL = await initSqlJs();
|
|
327
|
+
const db = new SQL.Database();
|
|
328
|
+
try {
|
|
329
|
+
db.run(`CREATE TABLE history (
|
|
330
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
331
|
+
source TEXT NOT NULL,
|
|
332
|
+
session_id TEXT,
|
|
333
|
+
project TEXT,
|
|
334
|
+
prompt TEXT NOT NULL,
|
|
335
|
+
timestamp_ms INTEGER NOT NULL,
|
|
336
|
+
git_branch TEXT
|
|
337
|
+
)`);
|
|
338
|
+
db.run(`CREATE TABLE sessions (
|
|
339
|
+
session_id TEXT NOT NULL,
|
|
340
|
+
source TEXT NOT NULL,
|
|
341
|
+
cwd TEXT,
|
|
342
|
+
git_branch TEXT,
|
|
343
|
+
first_activity_ms INTEGER,
|
|
344
|
+
last_activity_ms INTEGER,
|
|
345
|
+
last_assistant_text TEXT,
|
|
346
|
+
raw_path TEXT,
|
|
347
|
+
parser_version INTEGER NOT NULL DEFAULT 1,
|
|
348
|
+
PRIMARY KEY (session_id, source)
|
|
349
|
+
)`);
|
|
350
|
+
db.run(`CREATE TABLE trajectories (
|
|
351
|
+
id TEXT PRIMARY KEY,
|
|
352
|
+
version INTEGER,
|
|
353
|
+
persona_id TEXT,
|
|
354
|
+
project_id TEXT,
|
|
355
|
+
task_title TEXT,
|
|
356
|
+
task_description TEXT,
|
|
357
|
+
status TEXT,
|
|
358
|
+
started_at TEXT,
|
|
359
|
+
completed_at TEXT,
|
|
360
|
+
decisions_json TEXT NOT NULL,
|
|
361
|
+
retrospective_json TEXT NOT NULL,
|
|
362
|
+
search_text TEXT NOT NULL,
|
|
363
|
+
path TEXT,
|
|
364
|
+
updated_ms INTEGER NOT NULL,
|
|
365
|
+
timestamp_ms INTEGER NOT NULL
|
|
366
|
+
)`);
|
|
367
|
+
const insertHistory = db.prepare('INSERT INTO history (source, session_id, project, prompt, timestamp_ms) VALUES (?, ?, ?, ?, ?)');
|
|
368
|
+
const insertTrajectory = db.prepare(`INSERT INTO trajectories
|
|
369
|
+
(id, version, persona_id, project_id, task_title, task_description, status,
|
|
370
|
+
started_at, completed_at, decisions_json, retrospective_json, search_text,
|
|
371
|
+
path, updated_ms, timestamp_ms)
|
|
372
|
+
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`);
|
|
373
|
+
try {
|
|
374
|
+
insertHistory.run(['claude', 'shared', '/work/app', 'scoped root prompt', 1_000]);
|
|
375
|
+
insertHistory.run(['codex', 'shared', '/work/app/pkg', 'scoped child prompt', 2_000]);
|
|
376
|
+
insertHistory.run(['cursor', 'shared', '/work/other', 'outside prompt', 3_000]);
|
|
377
|
+
insertTrajectory.run([
|
|
378
|
+
'scoped-run',
|
|
379
|
+
1,
|
|
380
|
+
'planner',
|
|
381
|
+
'app',
|
|
382
|
+
'Scoped task',
|
|
383
|
+
'Scoped decision',
|
|
384
|
+
'completed',
|
|
385
|
+
null,
|
|
386
|
+
null,
|
|
387
|
+
'[]',
|
|
388
|
+
'{}',
|
|
389
|
+
'scoped decision',
|
|
390
|
+
'/work/app/.trajectories/planner/compacted/scoped-run.json',
|
|
391
|
+
4_000,
|
|
392
|
+
4_000,
|
|
393
|
+
]);
|
|
394
|
+
insertTrajectory.run([
|
|
395
|
+
'outside-run',
|
|
396
|
+
1,
|
|
397
|
+
'planner',
|
|
398
|
+
'other',
|
|
399
|
+
'Outside task',
|
|
400
|
+
'Outside decision',
|
|
401
|
+
'completed',
|
|
402
|
+
null,
|
|
403
|
+
null,
|
|
404
|
+
'[]',
|
|
405
|
+
'{}',
|
|
406
|
+
'outside decision',
|
|
407
|
+
'/work/other/.trajectories/planner/compacted/outside-run.json',
|
|
408
|
+
5_000,
|
|
409
|
+
5_000,
|
|
410
|
+
]);
|
|
411
|
+
}
|
|
412
|
+
finally {
|
|
413
|
+
insertHistory.free();
|
|
414
|
+
insertTrajectory.free();
|
|
415
|
+
}
|
|
416
|
+
await writeFile(dbPath, Buffer.from(db.export()));
|
|
417
|
+
}
|
|
418
|
+
finally {
|
|
419
|
+
db.close();
|
|
420
|
+
}
|
|
421
|
+
}
|
|
151
422
|
//# sourceMappingURL=mcp-smoke.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-smoke.test.js","sourceRoot":"","sources":["../src/mcp-smoke.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"mcp-smoke.test.js","sourceRoot":"","sources":["../src/mcp-smoke.test.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ai-hist",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.3",
|
|
4
4
|
"description": "TypeScript SDK and MCP server for AI coding agent session history — Claude Code, Codex, Cursor, and Agent Relay in one searchable index. Works with or without ai-hist sync via automatic JSONL fallback.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"private": false,
|
|
@@ -36,7 +36,7 @@
|
|
|
36
36
|
"coding-agent",
|
|
37
37
|
"session-history"
|
|
38
38
|
],
|
|
39
|
-
"homepage": "https://github.com/AgentWorkforce/
|
|
39
|
+
"homepage": "https://github.com/AgentWorkforce/relayhistory",
|
|
40
40
|
"files": [
|
|
41
41
|
"dist",
|
|
42
42
|
"README.md",
|
|
@@ -44,7 +44,7 @@
|
|
|
44
44
|
],
|
|
45
45
|
"repository": {
|
|
46
46
|
"type": "git",
|
|
47
|
-
"url": "https://github.com/AgentWorkforce/
|
|
47
|
+
"url": "https://github.com/AgentWorkforce/relayhistory",
|
|
48
48
|
"directory": "sdk-ts"
|
|
49
49
|
},
|
|
50
50
|
"publishConfig": {
|