@aiassesstech/sam 0.4.0 → 0.5.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/dist/compilation/wiki-compiler.d.ts +50 -0
- package/dist/compilation/wiki-compiler.d.ts.map +1 -0
- package/dist/compilation/wiki-compiler.js +158 -0
- package/dist/compilation/wiki-compiler.js.map +1 -0
- package/dist/memory/direct-writer.d.ts.map +1 -1
- package/dist/memory/direct-writer.js +1 -0
- package/dist/memory/direct-writer.js.map +1 -1
- package/openclaw.plugin.json +7 -4
- package/package.json +3 -3
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Sam Wiki Compiler — executes knowledge base compilation for Jessie and Nole.
|
|
3
|
+
*
|
|
4
|
+
* SPEC-fleet-knowledge-base-v1.2 §6.1 (BB Amendment 3):
|
|
5
|
+
* Compilation jobs are Sam-executed, Noah-scheduled. Requesting agent
|
|
6
|
+
* reads and queries; Sam writes under FORBIDDEN_PATTERNS enforcement.
|
|
7
|
+
*
|
|
8
|
+
* Flow:
|
|
9
|
+
* 1. Receive compilation task (target agent, topic)
|
|
10
|
+
* 2. Read target agent's raw memory files
|
|
11
|
+
* 3. Read existing wiki/intel INDEX.md
|
|
12
|
+
* 4. Compute SHA-256 hashes for all source files, classify raw/derived
|
|
13
|
+
* 5. Check expires_at on any output files — reject expired
|
|
14
|
+
* 6. For Nole: run sensitivity scan on body. If failed → reject
|
|
15
|
+
* 7. Write articles with provenance frontmatter (atomic write)
|
|
16
|
+
* 8. Log WIKI_COMPILATION event
|
|
17
|
+
*/
|
|
18
|
+
export type CompileTarget = 'jessie' | 'nole';
|
|
19
|
+
export interface CompilationRequest {
|
|
20
|
+
target: CompileTarget;
|
|
21
|
+
topic: string;
|
|
22
|
+
articleSlug: string;
|
|
23
|
+
articleTitle: string;
|
|
24
|
+
articleBody: string;
|
|
25
|
+
category: string;
|
|
26
|
+
tags: string[];
|
|
27
|
+
summary: string;
|
|
28
|
+
sourcePaths: string[];
|
|
29
|
+
}
|
|
30
|
+
export interface CompilationResult {
|
|
31
|
+
success: boolean;
|
|
32
|
+
articleSlug?: string;
|
|
33
|
+
contentHash?: string;
|
|
34
|
+
compilationEventId?: string;
|
|
35
|
+
sourceCount?: number;
|
|
36
|
+
derivedRatio?: number;
|
|
37
|
+
error?: string;
|
|
38
|
+
sensitivityRejection?: boolean;
|
|
39
|
+
}
|
|
40
|
+
export interface SourceReference {
|
|
41
|
+
path: string;
|
|
42
|
+
sha256: string;
|
|
43
|
+
type: 'raw' | 'derived';
|
|
44
|
+
}
|
|
45
|
+
export declare class WikiCompiler {
|
|
46
|
+
private readonly workspaceMap;
|
|
47
|
+
constructor(workspaceMap: Record<string, string>);
|
|
48
|
+
compile(request: CompilationRequest): CompilationResult;
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=wiki-compiler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wiki-compiler.d.ts","sourceRoot":"","sources":["../../src/compilation/wiki-compiler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAMH,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,MAAM,CAAC;AAE9C,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,aAAa,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,oBAAoB,CAAC,EAAE,OAAO,CAAC;CAChC;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,KAAK,GAAG,SAAS,CAAC;CACzB;AAqDD,qBAAa,YAAY;IAErB,OAAO,CAAC,QAAQ,CAAC,YAAY;gBAAZ,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAGvD,OAAO,CAAC,OAAO,EAAE,kBAAkB,GAAG,iBAAiB;CAyGxD"}
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Sam Wiki Compiler — executes knowledge base compilation for Jessie and Nole.
|
|
3
|
+
*
|
|
4
|
+
* SPEC-fleet-knowledge-base-v1.2 §6.1 (BB Amendment 3):
|
|
5
|
+
* Compilation jobs are Sam-executed, Noah-scheduled. Requesting agent
|
|
6
|
+
* reads and queries; Sam writes under FORBIDDEN_PATTERNS enforcement.
|
|
7
|
+
*
|
|
8
|
+
* Flow:
|
|
9
|
+
* 1. Receive compilation task (target agent, topic)
|
|
10
|
+
* 2. Read target agent's raw memory files
|
|
11
|
+
* 3. Read existing wiki/intel INDEX.md
|
|
12
|
+
* 4. Compute SHA-256 hashes for all source files, classify raw/derived
|
|
13
|
+
* 5. Check expires_at on any output files — reject expired
|
|
14
|
+
* 6. For Nole: run sensitivity scan on body. If failed → reject
|
|
15
|
+
* 7. Write articles with provenance frontmatter (atomic write)
|
|
16
|
+
* 8. Log WIKI_COMPILATION event
|
|
17
|
+
*/
|
|
18
|
+
import * as fs from 'node:fs';
|
|
19
|
+
import * as path from 'node:path';
|
|
20
|
+
import * as crypto from 'node:crypto';
|
|
21
|
+
function computeFileHash(filePath) {
|
|
22
|
+
const content = fs.readFileSync(filePath, 'utf-8');
|
|
23
|
+
return crypto.createHash('sha256').update(content).digest('hex');
|
|
24
|
+
}
|
|
25
|
+
function computeContentHash(content) {
|
|
26
|
+
return crypto.createHash('sha256').update(content).digest('hex');
|
|
27
|
+
}
|
|
28
|
+
function classifySource(sourcePath) {
|
|
29
|
+
if (sourcePath.startsWith('wiki/') || sourcePath.startsWith('intel/')) {
|
|
30
|
+
return 'derived';
|
|
31
|
+
}
|
|
32
|
+
return 'raw';
|
|
33
|
+
}
|
|
34
|
+
function isExpiredOutput(filePath) {
|
|
35
|
+
try {
|
|
36
|
+
const content = fs.readFileSync(filePath, 'utf-8');
|
|
37
|
+
const match = content.match(/expires_at:\s*"(.+?)"/);
|
|
38
|
+
if (match) {
|
|
39
|
+
return new Date(match[1]).getTime() < Date.now();
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
catch { /* not an output file or unreadable */ }
|
|
43
|
+
return false;
|
|
44
|
+
}
|
|
45
|
+
const SENSITIVITY_PATTERNS = [
|
|
46
|
+
/(?:0x)?[0-9a-fA-F]{64}/,
|
|
47
|
+
/(?:sk_|pk_|rk_)(live|test)_[a-zA-Z0-9]{24,}/,
|
|
48
|
+
/(?:AKIA|ASIA)[A-Z0-9]{16}/,
|
|
49
|
+
/Bearer\s+[a-zA-Z0-9\-._~+\/]{20,}/,
|
|
50
|
+
/hck_[a-zA-Z0-9]{32,}/,
|
|
51
|
+
/-----BEGIN (?:RSA |EC )?PRIVATE KEY-----/,
|
|
52
|
+
];
|
|
53
|
+
function scanSensitivity(bodyContent) {
|
|
54
|
+
const matches = [];
|
|
55
|
+
const lines = bodyContent.split('\n');
|
|
56
|
+
for (let i = 0; i < lines.length; i++) {
|
|
57
|
+
for (const pattern of SENSITIVITY_PATTERNS) {
|
|
58
|
+
if (pattern.test(lines[i])) {
|
|
59
|
+
matches.push({ pattern: pattern.source, lineNumber: i + 1 });
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
return { passed: matches.length === 0, matches };
|
|
64
|
+
}
|
|
65
|
+
let compileSeq = 0;
|
|
66
|
+
export class WikiCompiler {
|
|
67
|
+
workspaceMap;
|
|
68
|
+
constructor(workspaceMap) {
|
|
69
|
+
this.workspaceMap = workspaceMap;
|
|
70
|
+
}
|
|
71
|
+
compile(request) {
|
|
72
|
+
const targetWorkspace = this.workspaceMap[request.target];
|
|
73
|
+
if (!targetWorkspace) {
|
|
74
|
+
return { success: false, error: `No workspace configured for ${request.target}` };
|
|
75
|
+
}
|
|
76
|
+
const targetDir = request.target === 'nole'
|
|
77
|
+
? path.join(targetWorkspace, 'intel')
|
|
78
|
+
: path.join(targetWorkspace, 'wiki');
|
|
79
|
+
if (!fs.existsSync(targetDir)) {
|
|
80
|
+
fs.mkdirSync(targetDir, { recursive: true });
|
|
81
|
+
}
|
|
82
|
+
// Step 1: Resolve and hash source files
|
|
83
|
+
const sources = [];
|
|
84
|
+
const rejectedExpired = [];
|
|
85
|
+
for (const sourcePath of request.sourcePaths) {
|
|
86
|
+
const fullPath = path.resolve(targetWorkspace, sourcePath);
|
|
87
|
+
if (!fs.existsSync(fullPath)) {
|
|
88
|
+
continue;
|
|
89
|
+
}
|
|
90
|
+
if (isExpiredOutput(fullPath)) {
|
|
91
|
+
rejectedExpired.push(sourcePath);
|
|
92
|
+
continue;
|
|
93
|
+
}
|
|
94
|
+
sources.push({
|
|
95
|
+
path: sourcePath,
|
|
96
|
+
sha256: computeFileHash(fullPath),
|
|
97
|
+
type: classifySource(sourcePath),
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
// Step 2: Sensitivity scan for Nole (IH2: body only, before frontmatter)
|
|
101
|
+
if (request.target === 'nole') {
|
|
102
|
+
const scanResult = scanSensitivity(request.articleBody);
|
|
103
|
+
if (!scanResult.passed) {
|
|
104
|
+
return {
|
|
105
|
+
success: false,
|
|
106
|
+
error: `Sensitivity scan failed: ${scanResult.matches.length} match(es) detected`,
|
|
107
|
+
sensitivityRejection: true,
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
// Step 3: Build article with provenance frontmatter
|
|
112
|
+
const compilationEventId = `WIKI-COMPILE-${Date.now()}-${++compileSeq}`;
|
|
113
|
+
const lastUpdated = new Date().toISOString();
|
|
114
|
+
const derivedCount = sources.filter(s => s.type === 'derived').length;
|
|
115
|
+
const derivedRatio = sources.length > 0 ? derivedCount / sources.length : 0;
|
|
116
|
+
const frontmatterFields = [
|
|
117
|
+
'---',
|
|
118
|
+
`title: "${request.articleTitle}"`,
|
|
119
|
+
`slug: "${request.articleSlug}"`,
|
|
120
|
+
`category: "${request.category}"`,
|
|
121
|
+
`updated: "${lastUpdated}"`,
|
|
122
|
+
`tags: [${request.tags.map(t => `"${t}"`).join(', ')}]`,
|
|
123
|
+
'sources:',
|
|
124
|
+
...sources.map(s => ` - path: "${s.path}"\n sha256: "${s.sha256}"\n type: "${s.type}"`),
|
|
125
|
+
`compilation_event: "${compilationEventId}"`,
|
|
126
|
+
];
|
|
127
|
+
if (rejectedExpired.length > 0) {
|
|
128
|
+
frontmatterFields.push(`rejected_expired: [${rejectedExpired.map(p => `"${p}"`).join(', ')}]`);
|
|
129
|
+
}
|
|
130
|
+
// IH1: Compute content_hash before the hash line is added
|
|
131
|
+
const bodyWithFrontmatterNoHash = [...frontmatterFields, '---', ''].join('\n') + request.articleBody;
|
|
132
|
+
const contentHash = computeContentHash(bodyWithFrontmatterNoHash);
|
|
133
|
+
const fullContent = [
|
|
134
|
+
...frontmatterFields,
|
|
135
|
+
`content_hash: "${contentHash}"`,
|
|
136
|
+
'---',
|
|
137
|
+
'',
|
|
138
|
+
].join('\n') + request.articleBody;
|
|
139
|
+
// Step 4: Atomic write (IH1)
|
|
140
|
+
const articlePath = path.join(targetDir, `${request.articleSlug}.md`);
|
|
141
|
+
const articleDir = path.dirname(articlePath);
|
|
142
|
+
if (!fs.existsSync(articleDir)) {
|
|
143
|
+
fs.mkdirSync(articleDir, { recursive: true });
|
|
144
|
+
}
|
|
145
|
+
const tmpPath = articlePath + `.tmp.${Date.now()}`;
|
|
146
|
+
fs.writeFileSync(tmpPath, fullContent);
|
|
147
|
+
fs.renameSync(tmpPath, articlePath);
|
|
148
|
+
return {
|
|
149
|
+
success: true,
|
|
150
|
+
articleSlug: request.articleSlug,
|
|
151
|
+
contentHash,
|
|
152
|
+
compilationEventId,
|
|
153
|
+
sourceCount: sources.length,
|
|
154
|
+
derivedRatio,
|
|
155
|
+
};
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
//# sourceMappingURL=wiki-compiler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wiki-compiler.js","sourceRoot":"","sources":["../../src/compilation/wiki-compiler.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"direct-writer.d.ts","sourceRoot":"","sources":["../../src/memory/direct-writer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"direct-writer.d.ts","sourceRoot":"","sources":["../../src/memory/direct-writer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AA2BxD,qBAAa,kBAAmB,YAAW,gBAAgB;IACzD,OAAO,CAAC,SAAS,CAAS;gBAEd,SAAS,CAAC,EAAE,MAAM;IAI9B,OAAO,CAAC,uBAAuB;IAMzB,KAAK,CAAC,IAAI,EAAE;QAChB,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,EAAE,CAAC;QACf,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC;KACtD,GAAG,OAAO,CAAC,MAAM,CAAC;CAiCpB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"direct-writer.js","sourceRoot":"","sources":["../../src/memory/direct-writer.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"direct-writer.js","sourceRoot":"","sources":["../../src/memory/direct-writer.ts"],"names":[],"mappings":"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"}
|
package/openclaw.plugin.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"id": "sam",
|
|
3
|
-
"name": "Sam
|
|
4
|
-
"description": "Chief Engineer plugin
|
|
5
|
-
"version": "0.
|
|
3
|
+
"name": "Sam \u2014 Chief Engineer",
|
|
4
|
+
"description": "Chief Engineer plugin \u2014 engineering pipeline management, Docker sandbox execution, autonomous build/test/deliver lifecycle, fleet-bus communications, and searchable engineering memory.",
|
|
5
|
+
"version": "0.5.0",
|
|
6
6
|
"entry": "dist/plugin.js",
|
|
7
7
|
"configSchema": {
|
|
8
8
|
"type": "object",
|
|
@@ -82,7 +82,10 @@
|
|
|
82
82
|
},
|
|
83
83
|
"grilloFailMode": {
|
|
84
84
|
"type": "string",
|
|
85
|
-
"enum": [
|
|
85
|
+
"enum": [
|
|
86
|
+
"fail_closed",
|
|
87
|
+
"fail_open"
|
|
88
|
+
],
|
|
86
89
|
"description": "Grillo governance fail mode. MUST be fail_closed in production (BB-A5)",
|
|
87
90
|
"default": "fail_closed"
|
|
88
91
|
},
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aiassesstech/sam",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"description": "Sam
|
|
3
|
+
"version": "0.5.0",
|
|
4
|
+
"description": "Sam \u2014 Chief Engineer plugin for OpenClaw. Engineering pipeline, Docker sandbox, autonomous execution, fleet-bus communications.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
7
7
|
"types": "dist/index.d.ts",
|
|
@@ -53,7 +53,7 @@
|
|
|
53
53
|
},
|
|
54
54
|
"dependencies": {
|
|
55
55
|
"@aiassesstech/fleet-alerting": "^0.1.2",
|
|
56
|
-
"@aiassesstech/fleet-bus": "^0.
|
|
56
|
+
"@aiassesstech/fleet-bus": "^0.5.0",
|
|
57
57
|
"@aiassesstech/prompt-shield": "^0.1.0",
|
|
58
58
|
"@aiassesstech/sam-engine-bridge": "file:../sam-engine-bridge"
|
|
59
59
|
},
|