@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.
@@ -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":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;AAiCtC,SAAS,eAAe,CAAC,QAAgB;IACvC,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACnD,OAAO,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACnE,CAAC;AAED,SAAS,kBAAkB,CAAC,OAAe;IACzC,OAAO,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACnE,CAAC;AAED,SAAS,cAAc,CAAC,UAAkB;IACxC,IAAI,UAAU,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,UAAU,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QACtE,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,eAAe,CAAC,QAAgB;IACvC,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACnD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;QACrD,IAAI,KAAK,EAAE,CAAC;YACV,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACnD,CAAC;IACH,CAAC;IAAC,MAAM,CAAC,CAAC,sCAAsC,CAAC,CAAC;IAClD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,oBAAoB,GAAa;IACrC,wBAAwB;IACxB,6CAA6C;IAC7C,2BAA2B;IAC3B,mCAAmC;IACnC,sBAAsB;IACtB,0CAA0C;CAC3C,CAAC;AAEF,SAAS,eAAe,CAAC,WAAmB;IAC1C,MAAM,OAAO,GAAmD,EAAE,CAAC;IACnE,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACtC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,KAAK,MAAM,OAAO,IAAI,oBAAoB,EAAE,CAAC;YAC3C,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC3B,OAAO,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,MAAM,EAAE,UAAU,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAC/D,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC;AACnD,CAAC;AAED,IAAI,UAAU,GAAG,CAAC,CAAC;AAEnB,MAAM,OAAO,YAAY;IAEJ;IADnB,YACmB,YAAoC;QAApC,iBAAY,GAAZ,YAAY,CAAwB;IACpD,CAAC;IAEJ,OAAO,CAAC,OAA2B;QACjC,MAAM,eAAe,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC1D,IAAI,CAAC,eAAe,EAAE,CAAC;YACrB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,+BAA+B,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;QACpF,CAAC;QAED,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,KAAK,MAAM;YACzC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,OAAO,CAAC;YACrC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;QAEvC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC9B,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC/C,CAAC;QAED,wCAAwC;QACxC,MAAM,OAAO,GAAsB,EAAE,CAAC;QACtC,MAAM,eAAe,GAAa,EAAE,CAAC;QAErC,KAAK,MAAM,UAAU,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;YAC7C,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,UAAU,CAAC,CAAC;YAE3D,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC7B,SAAS;YACX,CAAC;YAED,IAAI,eAAe,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC9B,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBACjC,SAAS;YACX,CAAC;YAED,OAAO,CAAC,IAAI,CAAC;gBACX,IAAI,EAAE,UAAU;gBAChB,MAAM,EAAE,eAAe,CAAC,QAAQ,CAAC;gBACjC,IAAI,EAAE,cAAc,CAAC,UAAU,CAAC;aACjC,CAAC,CAAC;QACL,CAAC;QAED,yEAAyE;QACzE,IAAI,OAAO,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;YAC9B,MAAM,UAAU,GAAG,eAAe,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;YACxD,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;gBACvB,OAAO;oBACL,OAAO,EAAE,KAAK;oBACd,KAAK,EAAE,4BAA4B,UAAU,CAAC,OAAO,CAAC,MAAM,qBAAqB;oBACjF,oBAAoB,EAAE,IAAI;iBAC3B,CAAC;YACJ,CAAC;QACH,CAAC;QAED,oDAAoD;QACpD,MAAM,kBAAkB,GAAG,gBAAgB,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;QACxE,MAAM,WAAW,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAE7C,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,MAAM,CAAC;QACtE,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QAE5E,MAAM,iBAAiB,GAAG;YACxB,KAAK;YACL,WAAW,OAAO,CAAC,YAAY,GAAG;YAClC,UAAU,OAAO,CAAC,WAAW,GAAG;YAChC,cAAc,OAAO,CAAC,QAAQ,GAAG;YACjC,aAAa,WAAW,GAAG;YAC3B,UAAU,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;YACvD,UAAU;YACV,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CACjB,cAAc,CAAC,CAAC,IAAI,mBAAmB,CAAC,CAAC,MAAM,iBAAiB,CAAC,CAAC,IAAI,GAAG,CAC1E;YACD,uBAAuB,kBAAkB,GAAG;SAC7C,CAAC;QAEF,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC/B,iBAAiB,CAAC,IAAI,CAAC,sBAAsB,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACjG,CAAC;QAED,0DAA0D;QAC1D,MAAM,yBAAyB,GAAG,CAAC,GAAG,iBAAiB,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,WAAW,CAAC;QACrG,MAAM,WAAW,GAAG,kBAAkB,CAAC,yBAAyB,CAAC,CAAC;QAElE,MAAM,WAAW,GAAG;YAClB,GAAG,iBAAiB;YACpB,kBAAkB,WAAW,GAAG;YAChC,KAAK;YACL,EAAE;SACH,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,WAAW,CAAC;QAEnC,6BAA6B;QAC7B,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,OAAO,CAAC,WAAW,KAAK,CAAC,CAAC;QACtE,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QAC7C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC/B,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAChD,CAAC;QAED,MAAM,OAAO,GAAG,WAAW,GAAG,QAAQ,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;QACnD,EAAE,CAAC,aAAa,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;QACvC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;QAEpC,OAAO;YACL,OAAO,EAAE,IAAI;YACb,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,WAAW;YACX,kBAAkB;YAClB,WAAW,EAAE,OAAO,CAAC,MAAM;YAC3B,YAAY;SACb,CAAC;IACJ,CAAC;CACF"}
@@ -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;AA0BxD,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
+ {"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"}
@@ -12,6 +12,7 @@
12
12
  import * as fs from 'node:fs';
13
13
  import * as path from 'node:path';
14
14
  const SUBDIR_MAP = {
15
+ engineering: 'engineering',
15
16
  'engineering-request': 'engineering',
16
17
  'engineering-stage-change': 'engineering',
17
18
  'failure-escalation': 'engineering',
@@ -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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"}
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "id": "sam",
3
- "name": "Sam Chief Engineer",
4
- "description": "Chief Engineer plugin engineering pipeline management, Docker sandbox execution, autonomous build/test/deliver lifecycle, fleet-bus communications, and searchable engineering memory.",
5
- "version": "0.3.5",
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": ["fail_closed", "fail_open"],
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.0",
4
- "description": "Sam Chief Engineer plugin for OpenClaw. Engineering pipeline, Docker sandbox, autonomous execution, fleet-bus communications.",
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.3.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
  },