@adhamalkhaja/seyola-runtime 0.11.21 → 0.12.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/bundle/index.d.ts.map +1 -1
- package/dist/bundle/index.js +381 -29
- package/dist/bundle/index.js.map +1 -1
- package/dist/cli/index.js +10 -0
- package/dist/cli/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 +60 -0
- package/dist/support-bundle/index.d.ts.map +1 -0
- package/dist/support-bundle/index.js +303 -0
- package/dist/support-bundle/index.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,303 @@
|
|
|
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
|
+
* What goes in:
|
|
16
|
+
* - version.json (verbatim — already public info)
|
|
17
|
+
* - doctor.json (rerun doctor at export time; output captured)
|
|
18
|
+
* - skills.txt (list of installed skill folder names)
|
|
19
|
+
* - dirs.txt (which member-owned dirs exist, file counts only)
|
|
20
|
+
* - state/atlas-state.md (if present, redacted)
|
|
21
|
+
* - state/daily-rhythm.yaml (if present, redacted)
|
|
22
|
+
* - state/client-goal.md (if present, redacted)
|
|
23
|
+
* - state/first-client-path.md (if present, redacted)
|
|
24
|
+
*
|
|
25
|
+
* What gets redacted:
|
|
26
|
+
* - Email addresses
|
|
27
|
+
* - Phone numbers
|
|
28
|
+
* - URLs that look like API keys or webhooks
|
|
29
|
+
* - Anything matching common secret patterns (sk-..., gh_..., AKIA..., -----BEGIN ...-----, etc.)
|
|
30
|
+
* - File paths under .ssh, secrets/, credentials/, .env, .env.*
|
|
31
|
+
*
|
|
32
|
+
* What never goes in:
|
|
33
|
+
* - .env file contents
|
|
34
|
+
* - secrets/ folder contents
|
|
35
|
+
* - credentials/ folder contents
|
|
36
|
+
* - Anything under .ssh
|
|
37
|
+
* - .git internals
|
|
38
|
+
* - Skill output that lives under self/, _foundations/, market/, offer/, offers/, clients/,
|
|
39
|
+
* content/, email/, commercial-surface/, outreach/, runs/, output/, outputs/, assets/
|
|
40
|
+
* (these contain real business data and stay local).
|
|
41
|
+
*/
|
|
42
|
+
import { existsSync, mkdirSync, readFileSync, writeFileSync, readdirSync, statSync } from "node:fs";
|
|
43
|
+
import { join, resolve } from "node:path";
|
|
44
|
+
import { runDoctor } from "../doctor/index.js";
|
|
45
|
+
const REDACTIONS = [
|
|
46
|
+
// Email — common shapes
|
|
47
|
+
{
|
|
48
|
+
label: "email",
|
|
49
|
+
pattern: /\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}\b/g,
|
|
50
|
+
replacement: "[REDACTED:email]",
|
|
51
|
+
},
|
|
52
|
+
// Phone — international and local-ish patterns. Conservative: matches +country + digits.
|
|
53
|
+
{
|
|
54
|
+
label: "phone",
|
|
55
|
+
pattern: /\+\d{1,3}[\s-]?\(?\d{1,4}\)?[\s-]?\d{3,4}[\s-]?\d{3,4}/g,
|
|
56
|
+
replacement: "[REDACTED:phone]",
|
|
57
|
+
},
|
|
58
|
+
// OpenAI-style keys
|
|
59
|
+
{
|
|
60
|
+
label: "openai-key",
|
|
61
|
+
pattern: /\bsk-(proj-)?[A-Za-z0-9]{20,}\b/g,
|
|
62
|
+
replacement: "[REDACTED:openai-key]",
|
|
63
|
+
},
|
|
64
|
+
// Anthropic-style keys
|
|
65
|
+
{
|
|
66
|
+
label: "anthropic-key",
|
|
67
|
+
pattern: /\bsk-ant-[A-Za-z0-9_-]{20,}\b/g,
|
|
68
|
+
replacement: "[REDACTED:anthropic-key]",
|
|
69
|
+
},
|
|
70
|
+
// GitHub personal-access tokens
|
|
71
|
+
{
|
|
72
|
+
label: "github-token",
|
|
73
|
+
pattern: /\bgh[pousr]_[A-Za-z0-9]{20,}\b/g,
|
|
74
|
+
replacement: "[REDACTED:github-token]",
|
|
75
|
+
},
|
|
76
|
+
// AWS access keys
|
|
77
|
+
{
|
|
78
|
+
label: "aws-access-key",
|
|
79
|
+
pattern: /\bAKIA[0-9A-Z]{16}\b/g,
|
|
80
|
+
replacement: "[REDACTED:aws-access-key]",
|
|
81
|
+
},
|
|
82
|
+
// Generic bearer tokens in URLs
|
|
83
|
+
{
|
|
84
|
+
label: "bearer-token",
|
|
85
|
+
pattern: /\b(bearer\s+|token=|api[_-]?key=)([A-Za-z0-9_-]{20,})/gi,
|
|
86
|
+
replacement: "$1[REDACTED:token]",
|
|
87
|
+
},
|
|
88
|
+
// PEM blocks
|
|
89
|
+
{
|
|
90
|
+
label: "pem-block",
|
|
91
|
+
pattern: /-----BEGIN [A-Z ]+-----[\s\S]*?-----END [A-Z ]+-----/g,
|
|
92
|
+
replacement: "[REDACTED:pem-block]",
|
|
93
|
+
},
|
|
94
|
+
// Stripe-style keys
|
|
95
|
+
{
|
|
96
|
+
label: "stripe-key",
|
|
97
|
+
pattern: /\b(sk|pk|rk)_(live|test)_[A-Za-z0-9]{20,}\b/g,
|
|
98
|
+
replacement: "[REDACTED:stripe-key]",
|
|
99
|
+
},
|
|
100
|
+
];
|
|
101
|
+
function redact(text, counter) {
|
|
102
|
+
let out = text;
|
|
103
|
+
for (const r of REDACTIONS) {
|
|
104
|
+
const matches = out.match(r.pattern);
|
|
105
|
+
if (matches)
|
|
106
|
+
counter.count += matches.length;
|
|
107
|
+
out = out.replace(r.pattern, r.replacement);
|
|
108
|
+
}
|
|
109
|
+
return out;
|
|
110
|
+
}
|
|
111
|
+
// ---------------------------------------------------------------------------
|
|
112
|
+
// Member-owned dirs that we count files in (but do NOT export contents).
|
|
113
|
+
// Kept in sync with the canonical MEMBER_OWNED_DIRS in bundle/index.ts.
|
|
114
|
+
// ---------------------------------------------------------------------------
|
|
115
|
+
const COUNTED_MEMBER_DIRS = [
|
|
116
|
+
"_foundations",
|
|
117
|
+
"self",
|
|
118
|
+
"runtime",
|
|
119
|
+
"market",
|
|
120
|
+
"clients",
|
|
121
|
+
"runs",
|
|
122
|
+
"output",
|
|
123
|
+
"outputs",
|
|
124
|
+
"offer",
|
|
125
|
+
"offers",
|
|
126
|
+
"content",
|
|
127
|
+
"email",
|
|
128
|
+
"commercial-surface",
|
|
129
|
+
"outreach",
|
|
130
|
+
"assets",
|
|
131
|
+
];
|
|
132
|
+
// State files we DO export (redacted). These are member state, not business data.
|
|
133
|
+
const EXPORTED_STATE_FILES = [
|
|
134
|
+
"runtime/atlas-state.md",
|
|
135
|
+
"runtime/daily-rhythm.yaml",
|
|
136
|
+
"runtime/client-goal.md",
|
|
137
|
+
"runtime/first-client-path.md",
|
|
138
|
+
];
|
|
139
|
+
// ---------------------------------------------------------------------------
|
|
140
|
+
// Entry
|
|
141
|
+
// ---------------------------------------------------------------------------
|
|
142
|
+
export async function runSupportBundle(args) {
|
|
143
|
+
const start = Date.now();
|
|
144
|
+
const ws = resolve(args.workspacePath);
|
|
145
|
+
const result = {
|
|
146
|
+
exitCode: 0,
|
|
147
|
+
status: "success",
|
|
148
|
+
workspace_path: ws,
|
|
149
|
+
output_path: "",
|
|
150
|
+
files_written: [],
|
|
151
|
+
redactions_applied: 0,
|
|
152
|
+
duration_ms: 0,
|
|
153
|
+
errors: [],
|
|
154
|
+
};
|
|
155
|
+
if (!existsSync(ws) || !statSync(ws).isDirectory()) {
|
|
156
|
+
result.exitCode = 1;
|
|
157
|
+
result.status = "failed";
|
|
158
|
+
result.errors.push({ code: "workspace_not_found", message: `--workspace '${ws}' does not exist or is not a directory.` });
|
|
159
|
+
return finalize(result, start, args);
|
|
160
|
+
}
|
|
161
|
+
// Output directory: support-bundles/<UTC-timestamp>/
|
|
162
|
+
const stamp = new Date().toISOString().replace(/[:.]/g, "-");
|
|
163
|
+
const outDir = join(ws, "support-bundles", stamp);
|
|
164
|
+
mkdirSync(outDir, { recursive: true });
|
|
165
|
+
result.output_path = outDir;
|
|
166
|
+
const counter = { count: 0 };
|
|
167
|
+
// 1. version.json — verbatim
|
|
168
|
+
const versionPath = join(ws, ".seyola", "version.json");
|
|
169
|
+
if (existsSync(versionPath)) {
|
|
170
|
+
const versionText = readFileSync(versionPath, "utf8");
|
|
171
|
+
writeFileSync(join(outDir, "version.json"), versionText, "utf8");
|
|
172
|
+
result.files_written.push("version.json");
|
|
173
|
+
}
|
|
174
|
+
else {
|
|
175
|
+
result.errors.push({ code: "version_missing", message: ".seyola/version.json not found." });
|
|
176
|
+
}
|
|
177
|
+
// 2. doctor output — fresh capture
|
|
178
|
+
try {
|
|
179
|
+
const doctorResult = await runDoctor({ workspacePath: ws, json: true });
|
|
180
|
+
writeFileSync(join(outDir, "doctor.json"), JSON.stringify(doctorResult, null, 2) + "\n", "utf8");
|
|
181
|
+
result.files_written.push("doctor.json");
|
|
182
|
+
}
|
|
183
|
+
catch (err) {
|
|
184
|
+
result.errors.push({ code: "doctor_failed", message: err.message });
|
|
185
|
+
}
|
|
186
|
+
// 3. skills.txt — list installed skill folder names
|
|
187
|
+
const skillsDir = join(ws, ".claude", "skills");
|
|
188
|
+
if (existsSync(skillsDir)) {
|
|
189
|
+
const skillNames = readdirSync(skillsDir)
|
|
190
|
+
.filter((name) => statSync(join(skillsDir, name)).isDirectory())
|
|
191
|
+
.sort();
|
|
192
|
+
writeFileSync(join(outDir, "skills.txt"), `# Installed skills (${skillNames.length} total)\n` + skillNames.join("\n") + "\n", "utf8");
|
|
193
|
+
result.files_written.push("skills.txt");
|
|
194
|
+
}
|
|
195
|
+
// 4. dirs.txt — file counts per member-owned directory
|
|
196
|
+
const dirRows = ["# Member-owned directory file counts", ""];
|
|
197
|
+
for (const dir of COUNTED_MEMBER_DIRS) {
|
|
198
|
+
const abs = join(ws, dir);
|
|
199
|
+
if (existsSync(abs) && statSync(abs).isDirectory()) {
|
|
200
|
+
const count = countFiles(abs);
|
|
201
|
+
dirRows.push(`${dir}/ ${count} file${count === 1 ? "" : "s"}`);
|
|
202
|
+
}
|
|
203
|
+
else {
|
|
204
|
+
dirRows.push(`${dir}/ MISSING`);
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
writeFileSync(join(outDir, "dirs.txt"), dirRows.join("\n") + "\n", "utf8");
|
|
208
|
+
result.files_written.push("dirs.txt");
|
|
209
|
+
// 5. state files — redacted copies
|
|
210
|
+
const stateDir = join(outDir, "state");
|
|
211
|
+
mkdirSync(stateDir, { recursive: true });
|
|
212
|
+
for (const rel of EXPORTED_STATE_FILES) {
|
|
213
|
+
const src = join(ws, rel);
|
|
214
|
+
if (!existsSync(src))
|
|
215
|
+
continue;
|
|
216
|
+
try {
|
|
217
|
+
const content = readFileSync(src, "utf8");
|
|
218
|
+
const redacted = redact(content, counter);
|
|
219
|
+
const destName = rel.replace(/[\\/]/g, "__");
|
|
220
|
+
writeFileSync(join(stateDir, destName), redacted, "utf8");
|
|
221
|
+
result.files_written.push(`state/${destName}`);
|
|
222
|
+
}
|
|
223
|
+
catch (err) {
|
|
224
|
+
result.errors.push({ code: "state_read_failed", message: `Could not read ${rel}: ${err.message}` });
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
result.redactions_applied = counter.count;
|
|
228
|
+
// 6. INDEX.md — describes what is in the bundle
|
|
229
|
+
const indexLines = [
|
|
230
|
+
`# Support Bundle — ${stamp}`,
|
|
231
|
+
"",
|
|
232
|
+
`Workspace: ${ws}`,
|
|
233
|
+
`Generated: ${new Date().toISOString()}`,
|
|
234
|
+
`Redactions applied: ${result.redactions_applied}`,
|
|
235
|
+
"",
|
|
236
|
+
"## Files included",
|
|
237
|
+
"",
|
|
238
|
+
...result.files_written.map((f) => `- ${f}`),
|
|
239
|
+
"",
|
|
240
|
+
"## What is NOT included",
|
|
241
|
+
"",
|
|
242
|
+
"- Contents of `_foundations/`, `self/`, `market/`, `offer/`, `offers/`, `clients/`, `content/`,",
|
|
243
|
+
" `email/`, `commercial-surface/`, `outreach/`, `assets/`, `output/`, `outputs/`, `runs/`",
|
|
244
|
+
" (business data; counted but not exported)",
|
|
245
|
+
"- `.env`, `secrets/`, `credentials/`, `.ssh/`, `.git/` (never read by this command)",
|
|
246
|
+
"- Skill output files (business data)",
|
|
247
|
+
"",
|
|
248
|
+
"## Redaction policy applied to state files",
|
|
249
|
+
"",
|
|
250
|
+
"- Email addresses → `[REDACTED:email]`",
|
|
251
|
+
"- Phone numbers → `[REDACTED:phone]`",
|
|
252
|
+
"- API keys (OpenAI, Anthropic, GitHub, AWS, Stripe) → `[REDACTED:<type>]`",
|
|
253
|
+
"- PEM blocks → `[REDACTED:pem-block]`",
|
|
254
|
+
"- Bearer tokens in URLs → `[REDACTED:token]`",
|
|
255
|
+
"",
|
|
256
|
+
"## How to share with support",
|
|
257
|
+
"",
|
|
258
|
+
"1. Open this folder. Verify there is nothing sensitive remaining in the state files.",
|
|
259
|
+
"2. Zip the folder.",
|
|
260
|
+
"3. Send the zip to support via the channel the operator named (Skool, email, or the support form).",
|
|
261
|
+
"",
|
|
262
|
+
"If you spot anything in the state files that should not be shared, edit it out before zipping. The runtime cannot redact context it does not recognize.",
|
|
263
|
+
"",
|
|
264
|
+
];
|
|
265
|
+
writeFileSync(join(outDir, "INDEX.md"), indexLines.join("\n"), "utf8");
|
|
266
|
+
result.files_written.push("INDEX.md");
|
|
267
|
+
return finalize(result, start, args);
|
|
268
|
+
}
|
|
269
|
+
function countFiles(dir) {
|
|
270
|
+
let count = 0;
|
|
271
|
+
for (const entry of readdirSync(dir, { withFileTypes: true })) {
|
|
272
|
+
if (entry.name === ".gitkeep")
|
|
273
|
+
continue;
|
|
274
|
+
if (entry.isFile())
|
|
275
|
+
count += 1;
|
|
276
|
+
else if (entry.isDirectory())
|
|
277
|
+
count += countFiles(join(dir, entry.name));
|
|
278
|
+
}
|
|
279
|
+
return count;
|
|
280
|
+
}
|
|
281
|
+
function finalize(result, start, args) {
|
|
282
|
+
result.duration_ms = Date.now() - start;
|
|
283
|
+
if (args.json) {
|
|
284
|
+
process.stdout.write(JSON.stringify(result, null, 2) + "\n");
|
|
285
|
+
}
|
|
286
|
+
else {
|
|
287
|
+
if (result.status === "success") {
|
|
288
|
+
process.stderr.write(`Support bundle written to ${result.output_path}\n`);
|
|
289
|
+
process.stderr.write(` files: ${result.files_written.length}\n`);
|
|
290
|
+
process.stderr.write(` redactions applied: ${result.redactions_applied}\n`);
|
|
291
|
+
process.stderr.write(` duration: ${result.duration_ms}ms\n`);
|
|
292
|
+
process.stderr.write(`\nReview INDEX.md inside the folder before sharing.\n`);
|
|
293
|
+
}
|
|
294
|
+
else {
|
|
295
|
+
process.stderr.write(`Support bundle FAILED.\n`);
|
|
296
|
+
for (const err of result.errors) {
|
|
297
|
+
process.stderr.write(` [${err.code}] ${err.message}\n`);
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
return result;
|
|
302
|
+
}
|
|
303
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/support-bundle/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AAEH,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACpG,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AA4B/C,MAAM,UAAU,GAAgB;IAC9B,wBAAwB;IACxB;QACE,KAAK,EAAE,OAAO;QACd,OAAO,EAAE,qDAAqD;QAC9D,WAAW,EAAE,kBAAkB;KAChC;IACD,yFAAyF;IACzF;QACE,KAAK,EAAE,OAAO;QACd,OAAO,EAAE,yDAAyD;QAClE,WAAW,EAAE,kBAAkB;KAChC;IACD,oBAAoB;IACpB;QACE,KAAK,EAAE,YAAY;QACnB,OAAO,EAAE,kCAAkC;QAC3C,WAAW,EAAE,uBAAuB;KACrC;IACD,uBAAuB;IACvB;QACE,KAAK,EAAE,eAAe;QACtB,OAAO,EAAE,gCAAgC;QACzC,WAAW,EAAE,0BAA0B;KACxC;IACD,gCAAgC;IAChC;QACE,KAAK,EAAE,cAAc;QACrB,OAAO,EAAE,iCAAiC;QAC1C,WAAW,EAAE,yBAAyB;KACvC;IACD,kBAAkB;IAClB;QACE,KAAK,EAAE,gBAAgB;QACvB,OAAO,EAAE,uBAAuB;QAChC,WAAW,EAAE,2BAA2B;KACzC;IACD,gCAAgC;IAChC;QACE,KAAK,EAAE,cAAc;QACrB,OAAO,EAAE,yDAAyD;QAClE,WAAW,EAAE,oBAAoB;KAClC;IACD,aAAa;IACb;QACE,KAAK,EAAE,WAAW;QAClB,OAAO,EAAE,uDAAuD;QAChE,WAAW,EAAE,sBAAsB;KACpC;IACD,oBAAoB;IACpB;QACE,KAAK,EAAE,YAAY;QACnB,OAAO,EAAE,8CAA8C;QACvD,WAAW,EAAE,uBAAuB;KACrC;CACF,CAAC;AAMF,SAAS,MAAM,CAAC,IAAY,EAAE,OAAsB;IAClD,IAAI,GAAG,GAAG,IAAI,CAAC;IACf,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE,CAAC;QAC3B,MAAM,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;QACrC,IAAI,OAAO;YAAE,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC;QAC7C,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC;IAC9C,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,8EAA8E;AAC9E,yEAAyE;AACzE,wEAAwE;AACxE,8EAA8E;AAE9E,MAAM,mBAAmB,GAAG;IAC1B,cAAc;IACd,MAAM;IACN,SAAS;IACT,QAAQ;IACR,SAAS;IACT,MAAM;IACN,QAAQ;IACR,SAAS;IACT,OAAO;IACP,QAAQ;IACR,SAAS;IACT,OAAO;IACP,oBAAoB;IACpB,UAAU;IACV,QAAQ;CACT,CAAC;AAEF,kFAAkF;AAClF,MAAM,oBAAoB,GAAG;IAC3B,wBAAwB;IACxB,2BAA2B;IAC3B,wBAAwB;IACxB,8BAA8B;CAC/B,CAAC;AAEF,8EAA8E;AAC9E,QAAQ;AACR,8EAA8E;AAE9E,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,IAAyB;IAC9D,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACzB,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAEvC,MAAM,MAAM,GAAwB;QAClC,QAAQ,EAAE,CAAC;QACX,MAAM,EAAE,SAAS;QACjB,cAAc,EAAE,EAAE;QAClB,WAAW,EAAE,EAAE;QACf,aAAa,EAAE,EAAE;QACjB,kBAAkB,EAAE,CAAC;QACrB,WAAW,EAAE,CAAC;QACd,MAAM,EAAE,EAAE;KACX,CAAC;IAEF,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;QACnD,MAAM,CAAC,QAAQ,GAAG,CAAC,CAAC;QACpB,MAAM,CAAC,MAAM,GAAG,QAAQ,CAAC;QACzB,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,qBAAqB,EAAE,OAAO,EAAE,gBAAgB,EAAE,yCAAyC,EAAE,CAAC,CAAC;QAC1H,OAAO,QAAQ,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;IACvC,CAAC;IAED,qDAAqD;IACrD,MAAM,KAAK,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IAC7D,MAAM,MAAM,GAAG,IAAI,CAAC,EAAE,EAAE,iBAAiB,EAAE,KAAK,CAAC,CAAC;IAClD,SAAS,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACvC,MAAM,CAAC,WAAW,GAAG,MAAM,CAAC;IAE5B,MAAM,OAAO,GAAkB,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;IAE5C,6BAA6B;IAC7B,MAAM,WAAW,GAAG,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,cAAc,CAAC,CAAC;IACxD,IAAI,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QAC5B,MAAM,WAAW,GAAG,YAAY,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;QACtD,aAAa,CAAC,IAAI,CAAC,MAAM,EAAE,cAAc,CAAC,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC;QACjE,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IAC5C,CAAC;SAAM,CAAC;QACN,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,iCAAiC,EAAE,CAAC,CAAC;IAC9F,CAAC;IAED,mCAAmC;IACnC,IAAI,CAAC;QACH,MAAM,YAAY,GAAG,MAAM,SAAS,CAAC,EAAE,aAAa,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QACxE,aAAa,CACX,IAAI,CAAC,MAAM,EAAE,aAAa,CAAC,EAC3B,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,EAC5C,MAAM,CACP,CAAC;QACF,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAC3C,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAG,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;IACjF,CAAC;IAED,oDAAoD;IACpD,MAAM,SAAS,GAAG,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;IAChD,IAAI,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC1B,MAAM,UAAU,GAAG,WAAW,CAAC,SAAS,CAAC;aACtC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;aAC/D,IAAI,EAAE,CAAC;QACV,aAAa,CACX,IAAI,CAAC,MAAM,EAAE,YAAY,CAAC,EAC1B,uBAAuB,UAAU,CAAC,MAAM,WAAW,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,EAClF,MAAM,CACP,CAAC;QACF,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAC1C,CAAC;IAED,uDAAuD;IACvD,MAAM,OAAO,GAAa,CAAC,sCAAsC,EAAE,EAAE,CAAC,CAAC;IACvE,KAAK,MAAM,GAAG,IAAI,mBAAmB,EAAE,CAAC;QACtC,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;QAC1B,IAAI,UAAU,CAAC,GAAG,CAAC,IAAI,QAAQ,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;YACnD,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;YAC9B,OAAO,CAAC,IAAI,CAAC,GAAG,GAAG,MAAM,KAAK,QAAQ,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;QAClE,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,IAAI,CAAC,GAAG,GAAG,YAAY,CAAC,CAAC;QACnC,CAAC;IACH,CAAC;IACD,aAAa,CAAC,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,EAAE,MAAM,CAAC,CAAC;IAC3E,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAEtC,mCAAmC;IACnC,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACvC,SAAS,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACzC,KAAK,MAAM,GAAG,IAAI,oBAAoB,EAAE,CAAC;QACvC,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;QAC1B,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,SAAS;QAC/B,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,YAAY,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;YAC1C,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAC1C,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;YAC7C,aAAa,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;YAC1D,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,QAAQ,EAAE,CAAC,CAAC;QACjD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,mBAAmB,EAAE,OAAO,EAAE,kBAAkB,GAAG,KAAM,GAAa,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QACjH,CAAC;IACH,CAAC;IACD,MAAM,CAAC,kBAAkB,GAAG,OAAO,CAAC,KAAK,CAAC;IAE1C,gDAAgD;IAChD,MAAM,UAAU,GAAG;QACjB,sBAAsB,KAAK,EAAE;QAC7B,EAAE;QACF,cAAc,EAAE,EAAE;QAClB,cAAc,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE;QACxC,uBAAuB,MAAM,CAAC,kBAAkB,EAAE;QAClD,EAAE;QACF,mBAAmB;QACnB,EAAE;QACF,GAAG,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;QAC5C,EAAE;QACF,yBAAyB;QACzB,EAAE;QACF,iGAAiG;QACjG,2FAA2F;QAC3F,6CAA6C;QAC7C,qFAAqF;QACrF,sCAAsC;QACtC,EAAE;QACF,4CAA4C;QAC5C,EAAE;QACF,wCAAwC;QACxC,sCAAsC;QACtC,2EAA2E;QAC3E,uCAAuC;QACvC,8CAA8C;QAC9C,EAAE;QACF,8BAA8B;QAC9B,EAAE;QACF,sFAAsF;QACtF,oBAAoB;QACpB,oGAAoG;QACpG,EAAE;QACF,yJAAyJ;QACzJ,EAAE;KACH,CAAC;IACF,aAAa,CAAC,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC;IACvE,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAEtC,OAAO,QAAQ,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;AACvC,CAAC;AAED,SAAS,UAAU,CAAC,GAAW;IAC7B,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,KAAK,MAAM,KAAK,IAAI,WAAW,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;QAC9D,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU;YAAE,SAAS;QACxC,IAAI,KAAK,CAAC,MAAM,EAAE;YAAE,KAAK,IAAI,CAAC,CAAC;aAC1B,IAAI,KAAK,CAAC,WAAW,EAAE;YAAE,KAAK,IAAI,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;IAC3E,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,QAAQ,CAAC,MAA2B,EAAE,KAAa,EAAE,IAAyB;IACrF,MAAM,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC;IACxC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QACd,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IAC/D,CAAC;SAAM,CAAC;QACN,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAChC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,6BAA6B,MAAM,CAAC,WAAW,IAAI,CAAC,CAAC;YAC1E,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,MAAM,CAAC,aAAa,CAAC,MAAM,IAAI,CAAC,CAAC;YAClE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,yBAAyB,MAAM,CAAC,kBAAkB,IAAI,CAAC,CAAC;YAC7E,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,eAAe,MAAM,CAAC,WAAW,MAAM,CAAC,CAAC;YAC9D,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,uDAAuD,CAAC,CAAC;QAChF,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC;YACjD,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;gBAChC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,OAAO,IAAI,CAAC,CAAC;YAC3D,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@adhamalkhaja/seyola-runtime",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.12.0",
|
|
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",
|