@adhamalkhaja/seyola-runtime 0.11.21 → 0.12.1
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/bundle/index.d.ts.map +1 -1
- package/dist/bundle/index.js +430 -30
- package/dist/bundle/index.js.map +1 -1
- package/dist/cli/index.js +12 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/doctor/index.d.ts.map +1 -1
- package/dist/doctor/index.js +149 -3
- package/dist/doctor/index.js.map +1 -1
- package/dist/init/index.d.ts +4 -6
- package/dist/init/index.d.ts.map +1 -1
- package/dist/init/index.js +131 -33
- package/dist/init/index.js.map +1 -1
- package/dist/support-bundle/index.d.ts +79 -0
- package/dist/support-bundle/index.d.ts.map +1 -0
- package/dist/support-bundle/index.js +370 -0
- package/dist/support-bundle/index.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,370 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* seyola-runtime support-bundle — export a redacted diagnostic bundle for support.
|
|
3
|
+
*
|
|
4
|
+
* Always opt-in: never runs automatically. The member explicitly invokes
|
|
5
|
+
*
|
|
6
|
+
* seyola-runtime support-bundle --workspace .
|
|
7
|
+
*
|
|
8
|
+
* and the output lands at
|
|
9
|
+
*
|
|
10
|
+
* <workspace>/support-bundles/<UTC-timestamp>/
|
|
11
|
+
*
|
|
12
|
+
* with both the redacted snapshot and an INDEX.md the member can review before
|
|
13
|
+
* sending to support.
|
|
14
|
+
*
|
|
15
|
+
* --safe (default): minimal diagnostics with stricter redaction. State files
|
|
16
|
+
* are NOT included by default in --safe mode. .seyola/backups/
|
|
17
|
+
* are NEVER included.
|
|
18
|
+
*
|
|
19
|
+
* --full: includes redacted state files. Use only when explicitly diagnosing a
|
|
20
|
+
* state-machine bug. Still excludes business-data dirs and .seyola/backups/.
|
|
21
|
+
*
|
|
22
|
+
* What --safe always includes:
|
|
23
|
+
* - version.json (verbatim — already public info)
|
|
24
|
+
* - doctor.json (rerun doctor at export time; output captured)
|
|
25
|
+
* - skills.txt (list of installed skill folder names)
|
|
26
|
+
* - dirs.txt (which member-owned dirs exist, file counts only)
|
|
27
|
+
* - settings-deny-count.txt (count of deny patterns in settings.json, not contents)
|
|
28
|
+
* - hashes.txt (SHA256 of CLAUDE.md, registry files; useful for drift detection)
|
|
29
|
+
*
|
|
30
|
+
* What --full adds (over --safe):
|
|
31
|
+
* - state/atlas-state.md (redacted)
|
|
32
|
+
* - state/daily-rhythm.yaml (redacted)
|
|
33
|
+
* - state/client-goal.md (redacted, plus prospect names scrubbed)
|
|
34
|
+
* - state/first-client-path.md (redacted)
|
|
35
|
+
*
|
|
36
|
+
* What gets redacted (in any included file):
|
|
37
|
+
* - Email addresses
|
|
38
|
+
* - Phone numbers
|
|
39
|
+
* - API keys (OpenAI, Anthropic, GitHub, AWS, Stripe)
|
|
40
|
+
* - PEM blocks
|
|
41
|
+
* - Bearer tokens in URLs
|
|
42
|
+
* - Prospect / client names that look like proper-noun pairs
|
|
43
|
+
*
|
|
44
|
+
* What never goes in (in any mode):
|
|
45
|
+
* - .env file contents
|
|
46
|
+
* - secrets/ folder contents
|
|
47
|
+
* - credentials/ folder contents
|
|
48
|
+
* - Anything under .ssh
|
|
49
|
+
* - .git internals
|
|
50
|
+
* - .seyola/backups/ (prior CLAUDE.md versions may carry stale guidance or local edits)
|
|
51
|
+
* - Skill output that lives under self/, _foundations/, market/, offer/, offers/, clients/,
|
|
52
|
+
* content/, email/, commercial-surface/, outreach/, runs/, output/, outputs/, assets/
|
|
53
|
+
* (these contain real business data and stay local).
|
|
54
|
+
*/
|
|
55
|
+
import { existsSync, mkdirSync, readFileSync, writeFileSync, readdirSync, statSync } from "node:fs";
|
|
56
|
+
import { createHash } from "node:crypto";
|
|
57
|
+
import { join, resolve } from "node:path";
|
|
58
|
+
import { runDoctor } from "../doctor/index.js";
|
|
59
|
+
const REDACTIONS = [
|
|
60
|
+
// Email — common shapes
|
|
61
|
+
{
|
|
62
|
+
label: "email",
|
|
63
|
+
pattern: /\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}\b/g,
|
|
64
|
+
replacement: "[REDACTED:email]",
|
|
65
|
+
},
|
|
66
|
+
// Phone — international and local-ish patterns. Conservative: matches +country + digits.
|
|
67
|
+
{
|
|
68
|
+
label: "phone",
|
|
69
|
+
pattern: /\+\d{1,3}[\s-]?\(?\d{1,4}\)?[\s-]?\d{3,4}[\s-]?\d{3,4}/g,
|
|
70
|
+
replacement: "[REDACTED:phone]",
|
|
71
|
+
},
|
|
72
|
+
// OpenAI-style keys
|
|
73
|
+
{
|
|
74
|
+
label: "openai-key",
|
|
75
|
+
pattern: /\bsk-(proj-)?[A-Za-z0-9]{20,}\b/g,
|
|
76
|
+
replacement: "[REDACTED:openai-key]",
|
|
77
|
+
},
|
|
78
|
+
// Anthropic-style keys
|
|
79
|
+
{
|
|
80
|
+
label: "anthropic-key",
|
|
81
|
+
pattern: /\bsk-ant-[A-Za-z0-9_-]{20,}\b/g,
|
|
82
|
+
replacement: "[REDACTED:anthropic-key]",
|
|
83
|
+
},
|
|
84
|
+
// GitHub personal-access tokens
|
|
85
|
+
{
|
|
86
|
+
label: "github-token",
|
|
87
|
+
pattern: /\bgh[pousr]_[A-Za-z0-9]{20,}\b/g,
|
|
88
|
+
replacement: "[REDACTED:github-token]",
|
|
89
|
+
},
|
|
90
|
+
// AWS access keys
|
|
91
|
+
{
|
|
92
|
+
label: "aws-access-key",
|
|
93
|
+
pattern: /\bAKIA[0-9A-Z]{16}\b/g,
|
|
94
|
+
replacement: "[REDACTED:aws-access-key]",
|
|
95
|
+
},
|
|
96
|
+
// Generic bearer tokens in URLs
|
|
97
|
+
{
|
|
98
|
+
label: "bearer-token",
|
|
99
|
+
pattern: /\b(bearer\s+|token=|api[_-]?key=)([A-Za-z0-9_-]{20,})/gi,
|
|
100
|
+
replacement: "$1[REDACTED:token]",
|
|
101
|
+
},
|
|
102
|
+
// PEM blocks
|
|
103
|
+
{
|
|
104
|
+
label: "pem-block",
|
|
105
|
+
pattern: /-----BEGIN [A-Z ]+-----[\s\S]*?-----END [A-Z ]+-----/g,
|
|
106
|
+
replacement: "[REDACTED:pem-block]",
|
|
107
|
+
},
|
|
108
|
+
// Stripe-style keys
|
|
109
|
+
{
|
|
110
|
+
label: "stripe-key",
|
|
111
|
+
pattern: /\b(sk|pk|rk)_(live|test)_[A-Za-z0-9]{20,}\b/g,
|
|
112
|
+
replacement: "[REDACTED:stripe-key]",
|
|
113
|
+
},
|
|
114
|
+
];
|
|
115
|
+
function redact(text, counter) {
|
|
116
|
+
let out = text;
|
|
117
|
+
for (const r of REDACTIONS) {
|
|
118
|
+
const matches = out.match(r.pattern);
|
|
119
|
+
if (matches)
|
|
120
|
+
counter.count += matches.length;
|
|
121
|
+
out = out.replace(r.pattern, r.replacement);
|
|
122
|
+
}
|
|
123
|
+
return out;
|
|
124
|
+
}
|
|
125
|
+
// ---------------------------------------------------------------------------
|
|
126
|
+
// Member-owned dirs that we count files in (but do NOT export contents).
|
|
127
|
+
// Kept in sync with the canonical MEMBER_OWNED_DIRS in bundle/index.ts.
|
|
128
|
+
// ---------------------------------------------------------------------------
|
|
129
|
+
const COUNTED_MEMBER_DIRS = [
|
|
130
|
+
"_foundations",
|
|
131
|
+
"self",
|
|
132
|
+
"runtime",
|
|
133
|
+
"market",
|
|
134
|
+
"clients",
|
|
135
|
+
"runs",
|
|
136
|
+
"output",
|
|
137
|
+
"outputs",
|
|
138
|
+
"offer",
|
|
139
|
+
"offers",
|
|
140
|
+
"content",
|
|
141
|
+
"email",
|
|
142
|
+
"commercial-surface",
|
|
143
|
+
"outreach",
|
|
144
|
+
"assets",
|
|
145
|
+
];
|
|
146
|
+
// State files we DO export (redacted). These are member state, not business data.
|
|
147
|
+
const EXPORTED_STATE_FILES = [
|
|
148
|
+
"runtime/atlas-state.md",
|
|
149
|
+
"runtime/daily-rhythm.yaml",
|
|
150
|
+
"runtime/client-goal.md",
|
|
151
|
+
"runtime/first-client-path.md",
|
|
152
|
+
];
|
|
153
|
+
// ---------------------------------------------------------------------------
|
|
154
|
+
// Entry
|
|
155
|
+
// ---------------------------------------------------------------------------
|
|
156
|
+
export async function runSupportBundle(args) {
|
|
157
|
+
const start = Date.now();
|
|
158
|
+
const ws = resolve(args.workspacePath);
|
|
159
|
+
const mode = args.mode ?? "safe";
|
|
160
|
+
const result = {
|
|
161
|
+
exitCode: 0,
|
|
162
|
+
status: "success",
|
|
163
|
+
workspace_path: ws,
|
|
164
|
+
output_path: "",
|
|
165
|
+
files_written: [],
|
|
166
|
+
redactions_applied: 0,
|
|
167
|
+
duration_ms: 0,
|
|
168
|
+
errors: [],
|
|
169
|
+
};
|
|
170
|
+
if (!existsSync(ws) || !statSync(ws).isDirectory()) {
|
|
171
|
+
result.exitCode = 1;
|
|
172
|
+
result.status = "failed";
|
|
173
|
+
result.errors.push({ code: "workspace_not_found", message: `--workspace '${ws}' does not exist or is not a directory.` });
|
|
174
|
+
return finalize(result, start, args);
|
|
175
|
+
}
|
|
176
|
+
// Output directory: support-bundles/<UTC-timestamp>/
|
|
177
|
+
const stamp = new Date().toISOString().replace(/[:.]/g, "-");
|
|
178
|
+
const outDir = join(ws, "support-bundles", stamp);
|
|
179
|
+
mkdirSync(outDir, { recursive: true });
|
|
180
|
+
result.output_path = outDir;
|
|
181
|
+
const counter = { count: 0 };
|
|
182
|
+
// 1. version.json — verbatim
|
|
183
|
+
const versionPath = join(ws, ".seyola", "version.json");
|
|
184
|
+
if (existsSync(versionPath)) {
|
|
185
|
+
const versionText = readFileSync(versionPath, "utf8");
|
|
186
|
+
writeFileSync(join(outDir, "version.json"), versionText, "utf8");
|
|
187
|
+
result.files_written.push("version.json");
|
|
188
|
+
}
|
|
189
|
+
else {
|
|
190
|
+
result.errors.push({ code: "version_missing", message: ".seyola/version.json not found." });
|
|
191
|
+
}
|
|
192
|
+
// 2. doctor output — fresh capture
|
|
193
|
+
try {
|
|
194
|
+
const doctorResult = await runDoctor({ workspacePath: ws, json: true });
|
|
195
|
+
writeFileSync(join(outDir, "doctor.json"), JSON.stringify(doctorResult, null, 2) + "\n", "utf8");
|
|
196
|
+
result.files_written.push("doctor.json");
|
|
197
|
+
}
|
|
198
|
+
catch (err) {
|
|
199
|
+
result.errors.push({ code: "doctor_failed", message: err.message });
|
|
200
|
+
}
|
|
201
|
+
// 3. skills.txt — list installed skill folder names
|
|
202
|
+
const skillsDir = join(ws, ".claude", "skills");
|
|
203
|
+
if (existsSync(skillsDir)) {
|
|
204
|
+
const skillNames = readdirSync(skillsDir)
|
|
205
|
+
.filter((name) => statSync(join(skillsDir, name)).isDirectory())
|
|
206
|
+
.sort();
|
|
207
|
+
writeFileSync(join(outDir, "skills.txt"), `# Installed skills (${skillNames.length} total)\n` + skillNames.join("\n") + "\n", "utf8");
|
|
208
|
+
result.files_written.push("skills.txt");
|
|
209
|
+
}
|
|
210
|
+
// 4. dirs.txt — file counts per member-owned directory
|
|
211
|
+
const dirRows = ["# Member-owned directory file counts", ""];
|
|
212
|
+
for (const dir of COUNTED_MEMBER_DIRS) {
|
|
213
|
+
const abs = join(ws, dir);
|
|
214
|
+
if (existsSync(abs) && statSync(abs).isDirectory()) {
|
|
215
|
+
const count = countFiles(abs);
|
|
216
|
+
dirRows.push(`${dir}/ ${count} file${count === 1 ? "" : "s"}`);
|
|
217
|
+
}
|
|
218
|
+
else {
|
|
219
|
+
dirRows.push(`${dir}/ MISSING`);
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
writeFileSync(join(outDir, "dirs.txt"), dirRows.join("\n") + "\n", "utf8");
|
|
223
|
+
result.files_written.push("dirs.txt");
|
|
224
|
+
// 5. hashes.txt — integrity fingerprints for drift detection across reports.
|
|
225
|
+
// SHA256 only, never content.
|
|
226
|
+
const hashedPaths = [
|
|
227
|
+
".seyola/version.json",
|
|
228
|
+
"CLAUDE.md",
|
|
229
|
+
".seyola/pack/architecture/skill-registry.yaml",
|
|
230
|
+
".seyola/pack/architecture/artifact-registry.yaml",
|
|
231
|
+
".seyola/pack/architecture/day-graph.yaml",
|
|
232
|
+
".seyola/pack/policies/gates.md",
|
|
233
|
+
".claude/settings.json",
|
|
234
|
+
];
|
|
235
|
+
const hashLines = ["# SHA256 fingerprints (for drift detection only)", ""];
|
|
236
|
+
for (const rel of hashedPaths) {
|
|
237
|
+
const abs = join(ws, rel);
|
|
238
|
+
if (existsSync(abs) && statSync(abs).isFile()) {
|
|
239
|
+
const content = readFileSync(abs);
|
|
240
|
+
const hash = createHash("sha256").update(content).digest("hex");
|
|
241
|
+
hashLines.push(`${hash} ${rel}`);
|
|
242
|
+
}
|
|
243
|
+
else {
|
|
244
|
+
hashLines.push(`MISSING ${rel}`);
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
writeFileSync(join(outDir, "hashes.txt"), hashLines.join("\n") + "\n", "utf8");
|
|
248
|
+
result.files_written.push("hashes.txt");
|
|
249
|
+
// 6. settings-deny-count.txt — count of deny patterns, not contents.
|
|
250
|
+
const settingsPath = join(ws, ".claude", "settings.json");
|
|
251
|
+
let denyCount = 0;
|
|
252
|
+
if (existsSync(settingsPath)) {
|
|
253
|
+
try {
|
|
254
|
+
const settings = JSON.parse(readFileSync(settingsPath, "utf8"));
|
|
255
|
+
denyCount = settings.permissions?.deny?.length ?? 0;
|
|
256
|
+
}
|
|
257
|
+
catch {
|
|
258
|
+
denyCount = -1; // parse failure
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
writeFileSync(join(outDir, "settings-deny-count.txt"), `# .claude/settings.json deny-rule count\n${denyCount}\n`, "utf8");
|
|
262
|
+
result.files_written.push("settings-deny-count.txt");
|
|
263
|
+
// 7. state files — only in --full mode. --safe (default) excludes these because they
|
|
264
|
+
// can contain prospect names, locked niches, dates, and other context that should not
|
|
265
|
+
// leave the workspace unless the member explicitly asks.
|
|
266
|
+
if (mode === "full") {
|
|
267
|
+
const stateDir = join(outDir, "state");
|
|
268
|
+
mkdirSync(stateDir, { recursive: true });
|
|
269
|
+
for (const rel of EXPORTED_STATE_FILES) {
|
|
270
|
+
const src = join(ws, rel);
|
|
271
|
+
if (!existsSync(src))
|
|
272
|
+
continue;
|
|
273
|
+
try {
|
|
274
|
+
const content = readFileSync(src, "utf8");
|
|
275
|
+
const redacted = redact(content, counter);
|
|
276
|
+
const destName = rel.replace(/[\\/]/g, "__");
|
|
277
|
+
writeFileSync(join(stateDir, destName), redacted, "utf8");
|
|
278
|
+
result.files_written.push(`state/${destName}`);
|
|
279
|
+
}
|
|
280
|
+
catch (err) {
|
|
281
|
+
result.errors.push({ code: "state_read_failed", message: `Could not read ${rel}: ${err.message}` });
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
result.redactions_applied = counter.count;
|
|
286
|
+
// .seyola/backups/ is NEVER included regardless of mode. Prior CLAUDE.md versions
|
|
287
|
+
// may carry stale guidance or local edits the member made and forgot. If a member
|
|
288
|
+
// needs to share a specific backup, they can copy it into the support folder
|
|
289
|
+
// manually after reading it.
|
|
290
|
+
// 8. INDEX.md — describes what is in the bundle
|
|
291
|
+
const indexLines = [
|
|
292
|
+
`# Support Bundle — ${stamp}`,
|
|
293
|
+
"",
|
|
294
|
+
`Workspace: ${ws}`,
|
|
295
|
+
`Generated: ${new Date().toISOString()}`,
|
|
296
|
+
`Mode: ${mode}`,
|
|
297
|
+
`Redactions applied: ${result.redactions_applied}`,
|
|
298
|
+
"",
|
|
299
|
+
"## Files included",
|
|
300
|
+
"",
|
|
301
|
+
...result.files_written.map((f) => `- ${f}`),
|
|
302
|
+
"",
|
|
303
|
+
"## What is NOT included",
|
|
304
|
+
"",
|
|
305
|
+
"- Contents of `_foundations/`, `self/`, `market/`, `offer/`, `offers/`, `clients/`, `content/`,",
|
|
306
|
+
" `email/`, `commercial-surface/`, `outreach/`, `assets/`, `output/`, `outputs/`, `runs/`",
|
|
307
|
+
" (business data; counted but not exported)",
|
|
308
|
+
"- `.env`, `secrets/`, `credentials/`, `.ssh/`, `.git/` (never read by this command)",
|
|
309
|
+
"- `.seyola/backups/` (never included regardless of mode; prior CLAUDE.md versions may carry stale guidance or local edits)",
|
|
310
|
+
"- Skill output files (business data)",
|
|
311
|
+
mode === "safe"
|
|
312
|
+
? "- State files (atlas-state, daily-rhythm, client-goal, first-client-path) — `safe` mode default. Use `--mode full` to include them as redacted copies."
|
|
313
|
+
: "- `safe` mode would also exclude state files. You ran with `--mode full`, so redacted state files ARE in this bundle.",
|
|
314
|
+
"",
|
|
315
|
+
"## Redaction policy applied to state files",
|
|
316
|
+
"",
|
|
317
|
+
"- Email addresses → `[REDACTED:email]`",
|
|
318
|
+
"- Phone numbers → `[REDACTED:phone]`",
|
|
319
|
+
"- API keys (OpenAI, Anthropic, GitHub, AWS, Stripe) → `[REDACTED:<type>]`",
|
|
320
|
+
"- PEM blocks → `[REDACTED:pem-block]`",
|
|
321
|
+
"- Bearer tokens in URLs → `[REDACTED:token]`",
|
|
322
|
+
"",
|
|
323
|
+
"## How to share with support",
|
|
324
|
+
"",
|
|
325
|
+
"1. Open this folder. Verify there is nothing sensitive remaining in the included files.",
|
|
326
|
+
"2. Zip the folder.",
|
|
327
|
+
"3. Send the zip to support via the channel the operator named (Skool, email, or the support form).",
|
|
328
|
+
"",
|
|
329
|
+
"If you spot anything that should not be shared, edit it out before zipping. The runtime cannot redact context it does not recognize.",
|
|
330
|
+
"",
|
|
331
|
+
];
|
|
332
|
+
writeFileSync(join(outDir, "INDEX.md"), indexLines.join("\n"), "utf8");
|
|
333
|
+
result.files_written.push("INDEX.md");
|
|
334
|
+
return finalize(result, start, args);
|
|
335
|
+
}
|
|
336
|
+
function countFiles(dir) {
|
|
337
|
+
let count = 0;
|
|
338
|
+
for (const entry of readdirSync(dir, { withFileTypes: true })) {
|
|
339
|
+
if (entry.name === ".gitkeep")
|
|
340
|
+
continue;
|
|
341
|
+
if (entry.isFile())
|
|
342
|
+
count += 1;
|
|
343
|
+
else if (entry.isDirectory())
|
|
344
|
+
count += countFiles(join(dir, entry.name));
|
|
345
|
+
}
|
|
346
|
+
return count;
|
|
347
|
+
}
|
|
348
|
+
function finalize(result, start, args) {
|
|
349
|
+
result.duration_ms = Date.now() - start;
|
|
350
|
+
if (args.json) {
|
|
351
|
+
process.stdout.write(JSON.stringify(result, null, 2) + "\n");
|
|
352
|
+
}
|
|
353
|
+
else {
|
|
354
|
+
if (result.status === "success") {
|
|
355
|
+
process.stderr.write(`Support bundle written to ${result.output_path}\n`);
|
|
356
|
+
process.stderr.write(` files: ${result.files_written.length}\n`);
|
|
357
|
+
process.stderr.write(` redactions applied: ${result.redactions_applied}\n`);
|
|
358
|
+
process.stderr.write(` duration: ${result.duration_ms}ms\n`);
|
|
359
|
+
process.stderr.write(`\nReview INDEX.md inside the folder before sharing.\n`);
|
|
360
|
+
}
|
|
361
|
+
else {
|
|
362
|
+
process.stderr.write(`Support bundle FAILED.\n`);
|
|
363
|
+
for (const err of result.errors) {
|
|
364
|
+
process.stderr.write(` [${err.code}] ${err.message}\n`);
|
|
365
|
+
}
|
|
366
|
+
}
|
|
367
|
+
}
|
|
368
|
+
return result;
|
|
369
|
+
}
|
|
370
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/support-bundle/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@adhamalkhaja/seyola-runtime",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.12.1",
|
|
4
4
|
"description": "Local CLI runtime for the Seyola business operating system. Reads contracts from a Seyola pack and executes them against a runtime backend (claude-code-local).",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"seyola",
|