jarvis-agent-factory 4.7.78 → 4.7.79
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/package.json +1 -1
- package/dist/src/engine/session-archive.d.ts +2 -2
- package/dist/src/engine/session-archive.js +18 -5
- package/dist/src/engine/session-archive.js.map +1 -1
- package/dist/src/engine/session-log-store.d.ts +21 -0
- package/dist/src/engine/session-log-store.js +52 -0
- package/dist/src/engine/session-log-store.js.map +1 -0
- package/dist/src/templates/platforms/claude/skills/concurrency-policy/SKILL.md +1 -1
- package/dist/web/guide.html +2 -2
- package/package.json +1 -1
package/dist/package.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* 会话归档 — 自动消费 session_events + working_memory → 生成摘要 → 写入
|
|
2
|
+
* 会话归档 — 自动消费 session_events + working_memory → 生成摘要 → 写入 session-logs
|
|
3
3
|
* 实现 OMC 风格"被动收集+自动注入"的跨会话知识传递
|
|
4
4
|
*/
|
|
5
5
|
import type { DatabaseSync } from 'node:sqlite';
|
|
@@ -11,7 +11,7 @@ interface ArchiveResult {
|
|
|
11
11
|
wikiSlug?: string;
|
|
12
12
|
}
|
|
13
13
|
/**
|
|
14
|
-
* 归档会话:消费事件日志 + 工作记忆 → 生成摘要 → 写入
|
|
14
|
+
* 归档会话:消费事件日志 + 工作记忆 → 生成摘要 → 写入 session-logs + session_context 表
|
|
15
15
|
*/
|
|
16
16
|
export declare function archiveSession(root: string, db: DatabaseSync, sessionId: string, runId: string, taskName?: string): Promise<ArchiveResult>;
|
|
17
17
|
/**
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { getSessionEvents, getWorkingMemory, saveSessionContext, getRecentSessionContexts, pruneWorkingMemory, } from './db.js';
|
|
2
|
-
import {
|
|
2
|
+
import { saveSessionLog } from './session-log-store.js';
|
|
3
3
|
/**
|
|
4
|
-
* 归档会话:消费事件日志 + 工作记忆 → 生成摘要 → 写入
|
|
4
|
+
* 归档会话:消费事件日志 + 工作记忆 → 生成摘要 → 写入 session-logs + session_context 表
|
|
5
5
|
*/
|
|
6
6
|
export async function archiveSession(root, db, sessionId, runId, taskName) {
|
|
7
7
|
const events = getSessionEvents(db, sessionId, 100);
|
|
@@ -41,10 +41,23 @@ export async function archiveSession(root, db, sessionId, runId, taskName) {
|
|
|
41
41
|
].filter(Boolean).join('\n');
|
|
42
42
|
// 写入 session_context 表
|
|
43
43
|
saveSessionContext(db, sessionId, runId, summary, decisions, pending);
|
|
44
|
-
// 写入
|
|
44
|
+
// 写入 session-logs 目录(独立于 RepoWiki)
|
|
45
45
|
try {
|
|
46
|
-
const
|
|
47
|
-
|
|
46
|
+
const slug = `会话记录-${taskLabel.replace(/[^a-zA-Z0-9一-鿿-]/g, '-').replace(/-+/g, '-').replace(/^-|-$/g, '').slice(0, 64)}`;
|
|
47
|
+
const logContent = [
|
|
48
|
+
'---',
|
|
49
|
+
`title: "会话记录:${taskLabel}"`,
|
|
50
|
+
'tags: ["session-log", "auto-archived"]',
|
|
51
|
+
`created: "${new Date().toISOString()}"`,
|
|
52
|
+
`updated: "${new Date().toISOString()}"`,
|
|
53
|
+
'category: session-log',
|
|
54
|
+
`session_id: "${sessionId}"`,
|
|
55
|
+
'---',
|
|
56
|
+
'',
|
|
57
|
+
summary,
|
|
58
|
+
].join('\n');
|
|
59
|
+
saveSessionLog(root, slug, logContent);
|
|
60
|
+
return { archived: true, summary, decisions, pending, wikiSlug: slug };
|
|
48
61
|
}
|
|
49
62
|
catch {
|
|
50
63
|
return { archived: true, summary, decisions, pending };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-archive.js","sourceRoot":"","sources":["../../../src/engine/session-archive.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,gBAAgB,EAAE,gBAAgB,EAAE,kBAAkB,EACtD,wBAAwB,EAAE,kBAAkB,GAC7C,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,cAAc,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"session-archive.js","sourceRoot":"","sources":["../../../src/engine/session-archive.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 保存会话日志文件
|
|
3
|
+
* @param root 项目根目录
|
|
4
|
+
* @param slug 文件名(不含 .md 扩展名)
|
|
5
|
+
* @param content Markdown 内容(含 YAML frontmatter)
|
|
6
|
+
* @returns 写入的完整文件路径
|
|
7
|
+
*/
|
|
8
|
+
export declare function saveSessionLog(root: string, slug: string, content: string): string;
|
|
9
|
+
/**
|
|
10
|
+
* 列出所有会话日志文件
|
|
11
|
+
* @param root 项目根目录
|
|
12
|
+
* @returns 文件名数组(不含 .md 扩展名)
|
|
13
|
+
*/
|
|
14
|
+
export declare function listSessionLogs(root: string): string[];
|
|
15
|
+
/**
|
|
16
|
+
* 读取指定的会话日志
|
|
17
|
+
* @param root 项目根目录
|
|
18
|
+
* @param slug 文件名(不含 .md 扩展名)
|
|
19
|
+
* @returns 文件内容,不存在时返回 null
|
|
20
|
+
*/
|
|
21
|
+
export declare function readSessionLog(root: string, slug: string): string | null;
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 会话日志存储 — 独立于 RepoWiki 的文件系统存储
|
|
3
|
+
* 数据目录: <projectRoot>/.jarvis/session-logs/
|
|
4
|
+
*
|
|
5
|
+
* 会话归档自动存入此目录,不污染 .jarvis/wiki/pages/。
|
|
6
|
+
* DB 中的 session_context 表提供查询能力,此处仅提供文件读写。
|
|
7
|
+
*/
|
|
8
|
+
import { writeFileSync, mkdirSync, existsSync, readFileSync, readdirSync } from 'node:fs';
|
|
9
|
+
import { resolve } from 'node:path';
|
|
10
|
+
function ensureSessionLogDir(root) {
|
|
11
|
+
const dir = resolve(root, '.jarvis', 'session-logs');
|
|
12
|
+
if (!existsSync(dir))
|
|
13
|
+
mkdirSync(dir, { recursive: true });
|
|
14
|
+
return dir;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* 保存会话日志文件
|
|
18
|
+
* @param root 项目根目录
|
|
19
|
+
* @param slug 文件名(不含 .md 扩展名)
|
|
20
|
+
* @param content Markdown 内容(含 YAML frontmatter)
|
|
21
|
+
* @returns 写入的完整文件路径
|
|
22
|
+
*/
|
|
23
|
+
export function saveSessionLog(root, slug, content) {
|
|
24
|
+
const dir = ensureSessionLogDir(root);
|
|
25
|
+
const file = resolve(dir, `${slug}.md`);
|
|
26
|
+
writeFileSync(file, content, 'utf-8');
|
|
27
|
+
return file;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* 列出所有会话日志文件
|
|
31
|
+
* @param root 项目根目录
|
|
32
|
+
* @returns 文件名数组(不含 .md 扩展名)
|
|
33
|
+
*/
|
|
34
|
+
export function listSessionLogs(root) {
|
|
35
|
+
const dir = resolve(root, '.jarvis', 'session-logs');
|
|
36
|
+
if (!existsSync(dir))
|
|
37
|
+
return [];
|
|
38
|
+
return readdirSync(dir).filter((f) => f.endsWith('.md'));
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* 读取指定的会话日志
|
|
42
|
+
* @param root 项目根目录
|
|
43
|
+
* @param slug 文件名(不含 .md 扩展名)
|
|
44
|
+
* @returns 文件内容,不存在时返回 null
|
|
45
|
+
*/
|
|
46
|
+
export function readSessionLog(root, slug) {
|
|
47
|
+
const file = resolve(root, '.jarvis', 'session-logs', `${slug}.md`);
|
|
48
|
+
if (!existsSync(file))
|
|
49
|
+
return null;
|
|
50
|
+
return readFileSync(file, 'utf-8');
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=session-log-store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-log-store.js","sourceRoot":"","sources":["../../../src/engine/session-log-store.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAC1F,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,SAAS,mBAAmB,CAAC,IAAY;IACvC,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,EAAE,SAAS,EAAE,cAAc,CAAC,CAAC;IACrD,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1D,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,cAAc,CAAC,IAAY,EAAE,IAAY,EAAE,OAAe;IACxE,MAAM,GAAG,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAC;IACtC,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,EAAE,GAAG,IAAI,KAAK,CAAC,CAAC;IACxC,aAAa,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IACtC,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,IAAY;IAC1C,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,EAAE,SAAS,EAAE,cAAc,CAAC,CAAC;IACrD,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,OAAO,EAAE,CAAC;IAChC,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;AACnE,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAAC,IAAY,EAAE,IAAY;IACvD,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,EAAE,SAAS,EAAE,cAAc,EAAE,GAAG,IAAI,KAAK,CAAC,CAAC;IACpE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IACnC,OAAO,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AACrC,CAAC"}
|
package/dist/web/guide.html
CHANGED
|
@@ -113,7 +113,7 @@
|
|
|
113
113
|
多智能体 AI 编程助手配置工厂 — 从想法到交付的完整软件开发流水线<br>
|
|
114
114
|
<strong>仅支持 Claude Code</strong> · 49 MCP 工具 · 44 指令 · 88 智能体 · 34 技能 · 17 流水线
|
|
115
115
|
</div>
|
|
116
|
-
<span class="version">v4.7.
|
|
116
|
+
<span class="version">v4.7.79</span>
|
|
117
117
|
</div>
|
|
118
118
|
|
|
119
119
|
<div class="stats">
|
|
@@ -505,7 +505,7 @@
|
|
|
505
505
|
<!-- ═══════════════════════════════════════ FOOTER -->
|
|
506
506
|
<div class="footer">
|
|
507
507
|
<p>
|
|
508
|
-
<strong>Jarvis Agent Factory v4.7.
|
|
508
|
+
<strong>Jarvis Agent Factory v4.7.79</strong> ·
|
|
509
509
|
<a href="https://github.com/Wjl1224734792/Jarvis-Agent-Factory">GitHub</a> ·
|
|
510
510
|
<a href="https://www.npmjs.com/package/jarvis-agent-factory">npm</a> ·
|
|
511
511
|
<a href="https://github.com/Wjl1224734792/Jarvis-Agent-Factory/blob/main/AGENTS.md">AGENTS.md</a>
|
package/package.json
CHANGED