@kruntime/kimage 0.1.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/README.md ADDED
@@ -0,0 +1,90 @@
1
+ # @kruntime/kimage
2
+
3
+ `@kruntime/kimage` owns K image authoring.
4
+
5
+ The root entrypoint is cross-platform and provides helpers for writing plain
6
+ runtime image objects that `@kruntime/komputer` can boot.
7
+
8
+ It owns:
9
+
10
+ - `image()`
11
+ - `agent()`
12
+ - `defineCommand()`
13
+ - `bridgeCommand()`
14
+ - `command()`
15
+ - `hook()`
16
+ - `cron()`
17
+ - `login()`
18
+ - `model`, `secret`, and `mount` needs helpers
19
+ - minimal `z` descriptors for command argument metadata
20
+
21
+ Example:
22
+
23
+ ```ts
24
+ import { command, hook, model, mount, secret, z } from '@kruntime/kimage'
25
+
26
+ export const args = {
27
+ target: z.string().default('/workspace'),
28
+ }
29
+
30
+ export default command(async ctx => {
31
+ const result = await ctx.exec({
32
+ command: 'ls',
33
+ argv: [String(ctx.args.target)],
34
+ })
35
+ return ctx.stdout(result.stdout || '')
36
+ })
37
+ ```
38
+
39
+ `login()` is just a typing helper for `home/<agent>/.k/login.ts`; the loader
40
+ also accepts a plain default function.
41
+
42
+ Node-only source directory loading lives in:
43
+
44
+ ```ts
45
+ import { buildImageFromDir, loadImageFromDir } from '@kruntime/kimage/node'
46
+ ```
47
+
48
+ That subpath owns:
49
+
50
+ - active file discovery
51
+ - `.cmd.ts/.cmd.sh/.cmd.md`
52
+ - `.hook.ts/.hook.sh/.hook.md`
53
+ - `.cron.ts/.cron.sh/.cron.md`
54
+ - expanded active files such as `bin/ticket/note/cmd.ts`,
55
+ `etc/k/hooks/cmd.before/rm/hook.ts`, and
56
+ `home/assistant/.k/cron/dream/cron.md`
57
+ - `.kimage/manifest.json` build output
58
+ - content-addressed image blobs
59
+
60
+ Directory-loaded images get a stable content-based `sha256:...` digest unless
61
+ the image config explicitly provides one. `.kimage/` is ignored by digesting,
62
+ so building the package does not change the source identity. `tests/` is also
63
+ ignored by image digests and packages; image tests validate the computer but are
64
+ not part of the computer image itself. Local secret files such as `.env`,
65
+ `.env.local`, `.npmrc`, and `.secrets/` are also excluded; secrets are runtime
66
+ bindings, not image bytes. `.env.example` may be packaged as documentation.
67
+
68
+ For active files, the path is the source of truth:
69
+
70
+ - `bin/ticket/note.cmd.ts` registers `ticket.note`
71
+ - `bin/ticket/note/cmd.ts` also registers `ticket.note`
72
+ - `etc/k/hooks/cmd.before/rm.hook.ts` registers `cmd.before`
73
+ - `etc/k/hooks/cmd.before/rm/hook.ts` also registers `cmd.before`
74
+ - `home/assistant/.k/cron/dream.cron.ts` registers `dream`
75
+ - `home/assistant/.k/cron/dream/cron.ts` also registers `dream`
76
+
77
+ If a module or markdown frontmatter declares a conflicting `name` or `event`,
78
+ loading fails during build/test. This keeps image packages reproducible and
79
+ prevents hidden command or hook aliases.
80
+
81
+ Shell active files can declare the same small metadata surface through leading
82
+ comments:
83
+
84
+ ```sh
85
+ # k: description Run the project tests.
86
+ # k: readonly true
87
+ # k: timeout 2m
88
+ ```
89
+
90
+ It does not own runtime execution, sessions, authority, storage, or CLI UX.
@@ -0,0 +1,54 @@
1
+ import type { RuntimeCommand, RuntimeCron, RuntimeHook, RuntimeImage, RuntimeLogin } from '@kruntime/komputer';
2
+ declare const ACTIVE_SUFFIXES: readonly [".cmd.sh", ".cmd.md", ".cmd.ts", ".hook.sh", ".hook.md", ".hook.ts", ".cron.sh", ".cron.md", ".cron.ts"];
3
+ type ActiveSuffix = (typeof ACTIVE_SUFFIXES)[number];
4
+ export interface KImageBuildManifest {
5
+ schema: 'k.image.manifest.v1';
6
+ digest: string;
7
+ builtAt: string;
8
+ sourceDir: string;
9
+ agents: string[];
10
+ files: KImageBuildFile[];
11
+ commands: KImageBuildActiveFile[];
12
+ hooks: KImageBuildActiveFile[];
13
+ crons: KImageBuildActiveFile[];
14
+ logins: KImageBuildLoginFile[];
15
+ }
16
+ export interface KImageBuildFile {
17
+ path: string;
18
+ kind: 'source' | 'static' | 'active' | 'config' | 'login';
19
+ sha256: string;
20
+ bytes: number;
21
+ blob: string;
22
+ }
23
+ export interface KImageBuildActiveFile {
24
+ name?: string;
25
+ event?: string;
26
+ path?: string;
27
+ kind: RuntimeCommand['kind'] | RuntimeHook['kind'] | RuntimeCron['kind'];
28
+ scope?: 'system' | 'agent';
29
+ agent?: string;
30
+ description?: string;
31
+ model?: string;
32
+ readonly?: boolean;
33
+ timeout?: string;
34
+ schedule?: string;
35
+ when?: string;
36
+ user?: string;
37
+ }
38
+ export interface KImageBuildLoginFile {
39
+ agent: string;
40
+ path: string;
41
+ }
42
+ export declare function loadImageFromDir(root: string): Promise<RuntimeImage>;
43
+ export declare function buildImageFromDir(root: string, options?: {
44
+ outDir?: string;
45
+ }): Promise<KImageBuildManifest>;
46
+ export declare function loadLogin(file: string): Promise<RuntimeLogin>;
47
+ export declare function loadCommand(_root: string, file: string, rel: string, suffix: ActiveSuffix, nameOverride?: string): Promise<RuntimeCommand>;
48
+ export declare function loadHook(_root: string, file: string, rel: string, suffix: ActiveSuffix, eventOverride?: string): Promise<RuntimeHook>;
49
+ export declare function loadCron(_root: string, file: string, rel: string, suffix: ActiveSuffix, nameOverride?: string): Promise<RuntimeCron>;
50
+ export declare function defineCommand(definition: RuntimeCommand): RuntimeCommand;
51
+ export declare function bridgeCommand(definition: RuntimeCommand & {
52
+ command: string;
53
+ }): RuntimeCommand;
54
+ export {};
@@ -0,0 +1,546 @@
1
+ var __rewriteRelativeImportExtension = (this && this.__rewriteRelativeImportExtension) || function (path, preserveJsx) {
2
+ if (typeof path === "string" && /^\.\.?\//.test(path)) {
3
+ return path.replace(/\.(tsx)$|((?:\.d)?)((?:\.[^./]+?)?)\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {
4
+ return tsx ? preserveJsx ? ".jsx" : ".js" : d && (!ext || !cm) ? m : (d + ext + "." + cm.toLowerCase() + "js");
5
+ });
6
+ }
7
+ return path;
8
+ };
9
+ import { createHash } from 'node:crypto';
10
+ import { pathToFileURL } from 'node:url';
11
+ import { basename, dirname, join, relative, sep } from 'node:path';
12
+ import { mkdir, readdir, readFile, stat, writeFile } from 'node:fs/promises';
13
+ const ACTIVE_SUFFIXES = [
14
+ '.cmd.sh',
15
+ '.cmd.md',
16
+ '.cmd.ts',
17
+ '.hook.sh',
18
+ '.hook.md',
19
+ '.hook.ts',
20
+ '.cron.sh',
21
+ '.cron.md',
22
+ '.cron.ts',
23
+ ];
24
+ export async function loadImageFromDir(root) {
25
+ const files = {};
26
+ const active = { commands: {}, hooks: [], crons: [], logins: {} };
27
+ for await (const file of walk(root, root)) {
28
+ const rel = toPosix(relative(root, file));
29
+ if (shouldSkip(rel))
30
+ continue;
31
+ const loginAgent = loginAgentFromPath(rel);
32
+ if (loginAgent) {
33
+ active.logins[loginAgent] = await loadLogin(file);
34
+ continue;
35
+ }
36
+ const activeFile = activeMatch(rel);
37
+ if (activeFile) {
38
+ if (activeFile.type === 'command') {
39
+ const command = await loadCommand(root, file, rel, activeFile.suffix, activeFile.name);
40
+ const name = command.name ?? activeFile.name ?? commandName(rel, activeFile.suffix);
41
+ if (active.commands[name])
42
+ throw new Error(`duplicate command active file: ${name}`);
43
+ active.commands[name] = command;
44
+ }
45
+ else if (activeFile.type === 'hook') {
46
+ active.hooks.push(await loadHook(root, file, rel, activeFile.suffix, activeFile.event));
47
+ }
48
+ else if (activeFile.type === 'cron') {
49
+ active.crons.push(await loadCron(root, file, rel, activeFile.suffix, activeFile.name));
50
+ }
51
+ continue;
52
+ }
53
+ if (isImageStaticFile(rel)) {
54
+ files[`/${rel}`] = await readFile(file, 'utf8');
55
+ }
56
+ }
57
+ const configPath = await firstExisting([
58
+ join(root, 'komputer.ts'),
59
+ ]);
60
+ let config = {};
61
+ if (configPath) {
62
+ const mod = await importModule(configPath);
63
+ config = asRuntimeImage(mod.default ?? mod.image ?? {});
64
+ }
65
+ for (const name of Object.keys(config.commands || {})) {
66
+ if (active.commands[name])
67
+ throw new Error(`duplicate command between active file and komputer.ts: ${name}`);
68
+ }
69
+ return {
70
+ digest: config.digest || await digestImageDir(root),
71
+ agents: config.agents || inferAgents(files),
72
+ files: { ...files, ...(config.files || {}) },
73
+ logins: { ...active.logins, ...(config.logins || {}) },
74
+ models: config.models || {},
75
+ needs: config.needs || {},
76
+ commands: { ...active.commands, ...(config.commands || {}) },
77
+ hooks: [...active.hooks, ...(config.hooks || [])],
78
+ crons: [...active.crons, ...(config.crons || [])],
79
+ sourceDir: root,
80
+ };
81
+ }
82
+ export async function buildImageFromDir(root, options = {}) {
83
+ const image = await loadImageFromDir(root);
84
+ const outDir = options.outDir || join(root, '.kimage');
85
+ const blobsDir = join(outDir, 'blobs', 'sha256');
86
+ await mkdir(blobsDir, { recursive: true });
87
+ const files = [];
88
+ for await (const file of walk(root, root)) {
89
+ const rel = toPosix(relative(root, file));
90
+ if (shouldSkip(rel))
91
+ continue;
92
+ const content = await readFile(file);
93
+ const sha256 = hashBytes(content);
94
+ const blob = `blobs/sha256/${sha256}`;
95
+ await writeFile(join(outDir, blob), content);
96
+ files.push({
97
+ path: rel,
98
+ kind: sourceKind(rel),
99
+ sha256,
100
+ bytes: content.byteLength,
101
+ blob,
102
+ });
103
+ }
104
+ const manifest = {
105
+ schema: 'k.image.manifest.v1',
106
+ digest: image.digest || await digestImageDir(root),
107
+ builtAt: new Date().toISOString(),
108
+ sourceDir: root,
109
+ agents: Object.keys(image.agents || {}),
110
+ files: files.sort((a, b) => a.path.localeCompare(b.path)),
111
+ commands: Object.values(image.commands || {}).map(activeSummary).sort(compareActive),
112
+ hooks: (image.hooks || []).map(activeSummary).sort(compareActive),
113
+ crons: (image.crons || []).map(activeSummary).sort(compareActive),
114
+ logins: Object.keys(image.logins || {}).sort().map((agent) => ({
115
+ agent,
116
+ path: `home/${agent}/.k/login.ts`,
117
+ })),
118
+ };
119
+ await writeFile(join(outDir, 'manifest.json'), `${JSON.stringify(manifest, null, 2)}\n`, 'utf8');
120
+ return manifest;
121
+ }
122
+ async function digestImageDir(root) {
123
+ const hash = createHash('sha256');
124
+ const files = [];
125
+ for await (const file of walk(root, root))
126
+ files.push(file);
127
+ for (const file of files.sort()) {
128
+ const rel = toPosix(relative(root, file));
129
+ hash.update(rel);
130
+ hash.update('\0');
131
+ hash.update(await readFile(file));
132
+ hash.update('\0');
133
+ }
134
+ return `sha256:${hash.digest('hex')}`;
135
+ }
136
+ export async function loadLogin(file) {
137
+ const mod = await importModule(file);
138
+ const login = functionValue(mod.default) ?? functionValue(mod.login);
139
+ if (!login)
140
+ throw new Error(`login file does not export a login function: ${file}`);
141
+ return login;
142
+ }
143
+ export async function loadCommand(_root, file, rel, suffix, nameOverride) {
144
+ const name = nameOverride || commandName(rel, suffix);
145
+ const base = {
146
+ name,
147
+ path: rel,
148
+ scope: rel.startsWith('home/') ? 'agent' : 'system',
149
+ agent: agentFromHomePath(rel),
150
+ };
151
+ if (suffix === '.cmd.sh') {
152
+ const script = await readFile(file, 'utf8');
153
+ const data = parseKCommentData(script);
154
+ assertPathValue('command name', rel, base.name, stringField(data, 'name'));
155
+ return { ...data, ...base, name: base.name, kind: 'shell', script };
156
+ }
157
+ if (suffix === '.cmd.md') {
158
+ const { data, body } = parseMarkdown(await readFile(file, 'utf8'));
159
+ assertPathValue('command name', rel, base.name, stringField(data, 'name'));
160
+ return { ...data, ...base, name: base.name, kind: 'markdown', prompt: body.trim() };
161
+ }
162
+ const mod = await importModule(file);
163
+ return normalizeModuleCommand(base, mod);
164
+ }
165
+ export async function loadHook(_root, file, rel, suffix, eventOverride) {
166
+ const event = eventOverride || hookEventFromPath(rel);
167
+ const base = {
168
+ event,
169
+ path: rel,
170
+ scope: rel.startsWith('home/') ? 'agent' : 'system',
171
+ agent: agentFromHomePath(rel),
172
+ };
173
+ if (suffix === '.hook.sh') {
174
+ const script = await readFile(file, 'utf8');
175
+ const data = parseKCommentData(script);
176
+ const declaredEvent = stringField(data, 'event') ?? event;
177
+ assertPathValue('hook event', rel, event, declaredEvent);
178
+ return { ...data, ...base, kind: 'shell', event: declaredEvent, script };
179
+ }
180
+ if (suffix === '.hook.md') {
181
+ const { data, body } = parseMarkdown(await readFile(file, 'utf8'));
182
+ const declaredEvent = stringField(data, 'event') ?? event;
183
+ assertPathValue('hook event', rel, event, declaredEvent);
184
+ return { ...data, ...base, kind: 'markdown', event: declaredEvent, prompt: body.trim() };
185
+ }
186
+ const mod = await importModule(file);
187
+ const exported = mod.default ?? mod;
188
+ if (exported && typeof exported === 'object' && !Array.isArray(exported)) {
189
+ const record = asRecord(exported);
190
+ const declaredEvent = stringField(record, 'event') ?? stringField(mod, 'event') ?? event;
191
+ assertPathValue('hook event', rel, event, declaredEvent);
192
+ return {
193
+ ...record,
194
+ ...base,
195
+ kind: 'module',
196
+ event: declaredEvent,
197
+ handler: functionValue(record.handler) ?? functionValue(mod.handler),
198
+ };
199
+ }
200
+ const declaredEvent = stringField(mod, 'event') ?? event;
201
+ assertPathValue('hook event', rel, event, declaredEvent);
202
+ return {
203
+ ...base,
204
+ kind: 'module',
205
+ event: declaredEvent,
206
+ handler: functionValue(mod.default) ?? functionValue(mod.handler),
207
+ };
208
+ }
209
+ export async function loadCron(_root, file, rel, suffix, nameOverride) {
210
+ const name = nameOverride || cronName(rel, suffix);
211
+ const base = {
212
+ name,
213
+ path: rel,
214
+ scope: rel.startsWith('home/') ? 'agent' : 'system',
215
+ agent: agentFromHomePath(rel),
216
+ };
217
+ if (suffix === '.cron.sh') {
218
+ const script = await readFile(file, 'utf8');
219
+ const data = parseKCommentData(script);
220
+ const declaredName = stringField(data, 'name');
221
+ if (declaredName && declaredName !== 'cron')
222
+ assertPathValue('cron name', rel, base.name, declaredName);
223
+ return { ...data, ...base, name: base.name, kind: 'shell', script };
224
+ }
225
+ if (suffix === '.cron.md') {
226
+ const { data, body } = parseMarkdown(await readFile(file, 'utf8'));
227
+ const declaredName = stringField(data, 'name');
228
+ if (declaredName && declaredName !== 'cron')
229
+ assertPathValue('cron name', rel, base.name, declaredName);
230
+ return { ...data, ...base, name: base.name, kind: 'markdown', prompt: body.trim() };
231
+ }
232
+ const mod = await importModule(file);
233
+ const exported = mod.default ?? mod;
234
+ if (exported && typeof exported === 'object' && !Array.isArray(exported)) {
235
+ const record = asRecord(exported);
236
+ const declaredName = stringField(record, 'name');
237
+ if (declaredName && declaredName !== 'cron')
238
+ assertPathValue('cron name', rel, base.name, declaredName);
239
+ return {
240
+ ...record,
241
+ ...base,
242
+ name: base.name,
243
+ kind: 'module',
244
+ when: stringField(record, 'when') ?? stringField(mod, 'when'),
245
+ schedule: stringField(record, 'schedule') ?? stringField(mod, 'schedule'),
246
+ user: stringField(record, 'user') ?? stringField(mod, 'user'),
247
+ handler: functionValue(record.handler) ?? functionValue(mod.handler),
248
+ };
249
+ }
250
+ return {
251
+ ...base,
252
+ kind: 'module',
253
+ when: stringField(mod, 'when'),
254
+ schedule: stringField(mod, 'schedule'),
255
+ user: stringField(mod, 'user'),
256
+ handler: functionValue(mod.default) ?? functionValue(mod.handler),
257
+ };
258
+ }
259
+ export function defineCommand(definition) {
260
+ return { ...definition, kind: definition.kind ?? 'module' };
261
+ }
262
+ export function bridgeCommand(definition) {
263
+ return {
264
+ ...definition,
265
+ kind: 'module',
266
+ async handler(ctx, input = {}) {
267
+ const argv = typeof definition.argv === 'function'
268
+ ? definition.argv(input)
269
+ : definition.argv ?? inputArgv(input);
270
+ return ctx.exec({
271
+ command: definition.command,
272
+ argv,
273
+ stdin: typeof input.stdin === 'string' ? input.stdin : undefined,
274
+ remote: definition.remote ?? 'local',
275
+ limits: definition.limits,
276
+ }, {
277
+ by: typeof input.by === 'string' ? input.by : 'system:bridge-command',
278
+ });
279
+ },
280
+ };
281
+ }
282
+ function inputArgv(input) {
283
+ const argv = input.argv;
284
+ if (!Array.isArray(argv))
285
+ return [];
286
+ return argv.filter((value) => typeof value === 'string');
287
+ }
288
+ function normalizeModuleCommand(base, mod) {
289
+ const exported = mod.default ?? mod.command ?? mod;
290
+ if (typeof exported === 'function') {
291
+ return { ...base, kind: 'module', handler: exported };
292
+ }
293
+ const record = asRecord(exported);
294
+ assertPathValue('command name', base.path, base.name, stringField(record, 'name'));
295
+ return {
296
+ ...record,
297
+ ...base,
298
+ name: base.name,
299
+ kind: 'module',
300
+ handler: functionValue(record.handler) ?? functionValue(mod.handler) ?? functionValue(mod.default),
301
+ };
302
+ }
303
+ async function importModule(file) {
304
+ return import(__rewriteRelativeImportExtension(pathToFileURL(file).href));
305
+ }
306
+ async function* walk(dir, root) {
307
+ for (const name of await readdir(dir)) {
308
+ const file = join(dir, name);
309
+ const rel = toPosix(relative(root, file));
310
+ if (shouldSkip(rel))
311
+ continue;
312
+ const s = await stat(file);
313
+ if (s.isDirectory()) {
314
+ for await (const child of walk(file, root))
315
+ yield child;
316
+ }
317
+ else {
318
+ yield file;
319
+ }
320
+ }
321
+ }
322
+ function activeSuffix(path) {
323
+ return ACTIVE_SUFFIXES.find((suffix) => path.endsWith(suffix));
324
+ }
325
+ function activeMatch(path) {
326
+ const suffix = activeSuffix(path);
327
+ if (suffix) {
328
+ if (suffix.startsWith('.cmd.'))
329
+ return { type: 'command', suffix };
330
+ if (suffix.startsWith('.hook.'))
331
+ return { type: 'hook', suffix };
332
+ return { type: 'cron', suffix };
333
+ }
334
+ const parts = toPosix(path).split('/');
335
+ const base = parts.at(-1);
336
+ if (!base)
337
+ return undefined;
338
+ const expanded = base.match(/^(cmd|hook|cron)\.(sh|md|ts)$/);
339
+ if (!expanded)
340
+ return undefined;
341
+ const expandedSuffix = `.${expanded[1]}.${expanded[2]}`;
342
+ if (expanded[1] === 'cmd') {
343
+ const name = expandedCommandName(parts);
344
+ return name ? { type: 'command', suffix: expandedSuffix, name } : undefined;
345
+ }
346
+ if (expanded[1] === 'hook') {
347
+ const event = expandedEventName(parts);
348
+ return event ? { type: 'hook', suffix: expandedSuffix, event } : undefined;
349
+ }
350
+ const name = expandedCronName(parts);
351
+ return name ? { type: 'cron', suffix: expandedSuffix, name } : undefined;
352
+ }
353
+ function expandedCommandName(parts) {
354
+ if (parts[0] === 'bin' && parts.length > 2)
355
+ return parts.slice(1, -1).join('.');
356
+ if (parts[0] === 'home' && parts[2] === 'bin' && parts.length > 4)
357
+ return parts.slice(3, -1).join('.');
358
+ return undefined;
359
+ }
360
+ function expandedEventName(parts) {
361
+ const index = parts.lastIndexOf('hooks');
362
+ return index >= 0 && parts.length > index + 2 ? parts[index + 1] : undefined;
363
+ }
364
+ function expandedCronName(parts) {
365
+ const index = parts.lastIndexOf('cron');
366
+ return index >= 0 && parts.length > index + 2 ? parts[index + 1] : undefined;
367
+ }
368
+ function shouldSkip(path) {
369
+ return path.startsWith('node_modules/')
370
+ || path.startsWith('.git/')
371
+ || path.startsWith('.kstate/')
372
+ || path.startsWith('.kimage/')
373
+ || path.startsWith('tests/')
374
+ || isLocalSecretFile(path)
375
+ || path.endsWith('.test.ts')
376
+ || path.endsWith('.test.js');
377
+ }
378
+ function isLocalSecretFile(path) {
379
+ return path === '.env'
380
+ || (path.startsWith('.env.') && path !== '.env.example')
381
+ || path === '.npmrc'
382
+ || path === '.yarnrc'
383
+ || path === '.pnpmrc'
384
+ || path.endsWith('.local')
385
+ || path.includes('/.env.')
386
+ || path.includes('/.secrets/');
387
+ }
388
+ function isImageStaticFile(path) {
389
+ return path.startsWith('home/')
390
+ || path.startsWith('etc/')
391
+ || path.startsWith('share/');
392
+ }
393
+ function commandName(rel, suffix) {
394
+ let base = rel.slice(0, -suffix.length);
395
+ base = base.replace(/^bin\//, '');
396
+ base = base.replace(/^home\/[^/]+\/bin\//, '');
397
+ return toPosix(base).replaceAll('/', '.');
398
+ }
399
+ function cronName(rel, suffix) {
400
+ return basename(rel.slice(0, -suffix.length));
401
+ }
402
+ function hookEventFromPath(rel) {
403
+ const parts = toPosix(dirname(rel)).split('/');
404
+ const index = parts.lastIndexOf('hooks');
405
+ return index >= 0 ? parts[index + 1] : undefined;
406
+ }
407
+ function agentFromHomePath(rel) {
408
+ const parts = toPosix(rel).split('/');
409
+ return parts[0] === 'home' ? parts[1] : undefined;
410
+ }
411
+ function loginAgentFromPath(rel) {
412
+ const parts = toPosix(rel).split('/');
413
+ if (parts.length === 4 && parts[0] === 'home' && parts[2] === '.k' && parts[3] === 'login.ts')
414
+ return parts[1];
415
+ return undefined;
416
+ }
417
+ function inferAgents(files) {
418
+ const agents = {};
419
+ for (const path of Object.keys(files)) {
420
+ const match = path.match(/^\/home\/([^/]+)\//);
421
+ const name = match?.[1];
422
+ if (name)
423
+ agents[name] = { home: `/home/${name}`, model: 'default' };
424
+ }
425
+ return Object.keys(agents).length ? agents : { assistant: { home: '/home/assistant', model: 'default' } };
426
+ }
427
+ function parseMarkdown(text) {
428
+ if (!text.startsWith('---\n'))
429
+ return { data: {}, body: text };
430
+ const end = text.indexOf('\n---\n', 4);
431
+ if (end < 0)
432
+ return { data: {}, body: text };
433
+ const raw = text.slice(4, end);
434
+ const body = text.slice(end + 5);
435
+ const data = {};
436
+ for (const line of raw.split('\n')) {
437
+ const match = line.match(/^([A-Za-z0-9_.-]+):\s*(.*)$/);
438
+ const key = match?.[1];
439
+ if (!key)
440
+ continue;
441
+ data[key] = parseScalar(match?.[2] ?? '');
442
+ }
443
+ return { data, body };
444
+ }
445
+ function parseKCommentData(text) {
446
+ const data = {};
447
+ for (const line of text.split(/\r?\n/)) {
448
+ const trimmed = line.trim();
449
+ if (!trimmed)
450
+ continue;
451
+ if (!trimmed.startsWith('#'))
452
+ break;
453
+ const match = trimmed.match(/^#\s*k:\s*([A-Za-z0-9_.-]+)\s+(.*)$/);
454
+ if (match)
455
+ data[match[1]] = parseScalar(match[2] ?? '');
456
+ }
457
+ return data;
458
+ }
459
+ function parseScalar(value) {
460
+ const text = value.trim();
461
+ if (text === 'true')
462
+ return true;
463
+ if (text === 'false')
464
+ return false;
465
+ if (/^-?\d+$/.test(text))
466
+ return Number(text);
467
+ return text.replace(/^['"]|['"]$/g, '');
468
+ }
469
+ function toPosix(path) {
470
+ return sep === '/' ? path : path.replaceAll(sep, '/');
471
+ }
472
+ async function firstExisting(paths) {
473
+ for (const path of paths) {
474
+ if (await exists(path))
475
+ return path;
476
+ }
477
+ return undefined;
478
+ }
479
+ async function exists(path) {
480
+ try {
481
+ await stat(path);
482
+ return true;
483
+ }
484
+ catch (error) {
485
+ if (isNodeError(error) && error.code === 'ENOENT')
486
+ return false;
487
+ throw error;
488
+ }
489
+ }
490
+ function asRuntimeImage(value) {
491
+ return asRecord(value);
492
+ }
493
+ function asRecord(value) {
494
+ return value && typeof value === 'object' ? value : {};
495
+ }
496
+ function stringField(value, key) {
497
+ const field = value[key];
498
+ return typeof field === 'string' ? field : undefined;
499
+ }
500
+ function assertPathValue(kind, path, pathValue, declaredValue) {
501
+ if (!pathValue || !declaredValue || pathValue === declaredValue)
502
+ return;
503
+ throw new Error(`${kind} mismatch in ${path}: path declares ${pathValue}, module declares ${declaredValue}`);
504
+ }
505
+ function functionValue(value) {
506
+ return typeof value === 'function' ? value : undefined;
507
+ }
508
+ function hashBytes(bytes) {
509
+ return createHash('sha256').update(bytes).digest('hex');
510
+ }
511
+ function sourceKind(path) {
512
+ if (path === 'komputer.ts')
513
+ return 'config';
514
+ if (loginAgentFromPath(path))
515
+ return 'login';
516
+ if (activeMatch(path))
517
+ return 'active';
518
+ if (isImageStaticFile(path))
519
+ return 'static';
520
+ return 'source';
521
+ }
522
+ function activeSummary(file) {
523
+ const record = file;
524
+ return {
525
+ name: 'name' in file && typeof file.name === 'string' ? file.name : undefined,
526
+ event: 'event' in file && typeof file.event === 'string' ? file.event : undefined,
527
+ path: typeof file.path === 'string' ? file.path : undefined,
528
+ kind: file.kind,
529
+ scope: file.scope,
530
+ agent: file.agent,
531
+ description: typeof record.description === 'string' ? record.description : undefined,
532
+ model: typeof record.model === 'string' ? record.model : undefined,
533
+ readonly: typeof record.readonly === 'boolean' ? record.readonly : undefined,
534
+ timeout: typeof record.timeout === 'string' ? record.timeout : undefined,
535
+ schedule: typeof record.schedule === 'string' ? record.schedule : undefined,
536
+ when: typeof record.when === 'string' ? record.when : undefined,
537
+ user: typeof record.user === 'string' ? record.user : undefined,
538
+ };
539
+ }
540
+ function compareActive(a, b) {
541
+ return String(a.path || a.name || a.event || '').localeCompare(String(b.path || b.name || b.event || ''));
542
+ }
543
+ function isNodeError(error) {
544
+ return error instanceof Error;
545
+ }
546
+ //# sourceMappingURL=active-files.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"active-files.js","sourceRoot":"","sources":["../../../../packages/kimage/src/active-files.ts"],"names":[],"mappings":";;;;;;;;AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AACxC,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,WAAW,CAAA;AAClE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAU5E,MAAM,eAAe,GAAG;IACtB,SAAS;IACT,SAAS;IACT,SAAS;IACT,UAAU;IACV,UAAU;IACV,UAAU;IACV,UAAU;IACV,UAAU;IACV,UAAU;CACF,CAAA;AAoFV,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,IAAY;IACjD,MAAM,KAAK,GAA2B,EAAE,CAAA;IACxC,MAAM,MAAM,GAAqB,EAAE,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,CAAA;IAEnF,IAAI,KAAK,EAAE,MAAM,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC;QAC1C,MAAM,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAA;QACzC,IAAI,UAAU,CAAC,GAAG,CAAC;YAAE,SAAQ;QAC7B,MAAM,UAAU,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAA;QAC1C,IAAI,UAAU,EAAE,CAAC;YACf,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC,CAAA;YACjD,SAAQ;QACV,CAAC;QACD,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,CAAC,CAAA;QACnC,IAAI,UAAU,EAAE,CAAC;YACf,IAAI,UAAU,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;gBAClC,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,UAAU,CAAC,MAAM,EAAE,UAAU,CAAC,IAAI,CAAC,CAAA;gBACtF,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,UAAU,CAAC,IAAI,IAAI,WAAW,CAAC,GAAG,EAAE,UAAU,CAAC,MAAM,CAAC,CAAA;gBACnF,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;oBAAE,MAAM,IAAI,KAAK,CAAC,kCAAkC,IAAI,EAAE,CAAC,CAAA;gBACpF,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,OAAO,CAAA;YACjC,CAAC;iBAAM,IAAI,UAAU,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBACtC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,UAAU,CAAC,MAAM,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC,CAAA;YACzF,CAAC;iBAAM,IAAI,UAAU,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBACtC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,UAAU,CAAC,MAAM,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC,CAAA;YACxF,CAAC;YACD,SAAQ;QACV,CAAC;QACD,IAAI,iBAAiB,CAAC,GAAG,CAAC,EAAE,CAAC;YAC3B,KAAK,CAAC,IAAI,GAAG,EAAE,CAAC,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;QACjD,CAAC;IACH,CAAC;IAED,MAAM,UAAU,GAAG,MAAM,aAAa,CAAC;QACrC,IAAI,CAAC,IAAI,EAAE,aAAa,CAAC;KAC1B,CAAC,CAAA;IACF,IAAI,MAAM,GAAiB,EAAE,CAAA;IAC7B,IAAI,UAAU,EAAE,CAAC;QACf,MAAM,GAAG,GAAG,MAAM,YAAY,CAAC,UAAU,CAAC,CAAA;QAC1C,MAAM,GAAG,cAAc,CAAC,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,CAAA;IACzD,CAAC;IACD,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC,EAAE,CAAC;QACtD,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,0DAA0D,IAAI,EAAE,CAAC,CAAA;IAC9G,CAAC;IAED,OAAO;QACL,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,MAAM,cAAc,CAAC,IAAI,CAAC;QACnD,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,WAAW,CAAC,KAAK,CAAC;QAC3C,KAAK,EAAE,EAAE,GAAG,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,EAAE;QAC5C,MAAM,EAAE,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC,EAAE;QACtD,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,EAAE;QAC3B,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,EAAE;QACzB,QAAQ,EAAE,EAAE,GAAG,MAAM,CAAC,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC,EAAE;QAC5D,KAAK,EAAE,CAAC,GAAG,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;QACjD,KAAK,EAAE,CAAC,GAAG,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;QACjD,SAAS,EAAE,IAAI;KAChB,CAAA;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,IAAY,EAAE,UAA+B,EAAE;IACrF,MAAM,KAAK,GAAG,MAAM,gBAAgB,CAAC,IAAI,CAAC,CAAA;IAC1C,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAA;IACtD,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAA;IAChD,MAAM,KAAK,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IAE1C,MAAM,KAAK,GAAsB,EAAE,CAAA;IACnC,IAAI,KAAK,EAAE,MAAM,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC;QAC1C,MAAM,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAA;QACzC,IAAI,UAAU,CAAC,GAAG,CAAC;YAAE,SAAQ;QAC7B,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,CAAA;QACpC,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC,CAAA;QACjC,MAAM,IAAI,GAAG,gBAAgB,MAAM,EAAE,CAAA;QACrC,MAAM,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,CAAC,CAAA;QAC5C,KAAK,CAAC,IAAI,CAAC;YACT,IAAI,EAAE,GAAG;YACT,IAAI,EAAE,UAAU,CAAC,GAAG,CAAC;YACrB,MAAM;YACN,KAAK,EAAE,OAAO,CAAC,UAAU;YACzB,IAAI;SACL,CAAC,CAAA;IACJ,CAAC;IAED,MAAM,QAAQ,GAAwB;QACpC,MAAM,EAAE,qBAAqB;QAC7B,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,MAAM,cAAc,CAAC,IAAI,CAAC;QAClD,OAAO,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACjC,SAAS,EAAE,IAAI;QACf,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,EAAE,CAAC;QACvC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACzD,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC;QACpF,KAAK,EAAE,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC;QACjE,KAAK,EAAE,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC;QACjE,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YAC7D,KAAK;YACL,IAAI,EAAE,QAAQ,KAAK,cAAc;SAClC,CAAC,CAAC;KACJ,CAAA;IACD,MAAM,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,eAAe,CAAC,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;IAChG,OAAO,QAAQ,CAAA;AACjB,CAAC;AAED,KAAK,UAAU,cAAc,CAAC,IAAY;IACxC,MAAM,IAAI,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAA;IACjC,MAAM,KAAK,GAAa,EAAE,CAAA;IAC1B,IAAI,KAAK,EAAE,MAAM,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAC3D,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;QAChC,MAAM,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAA;QACzC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;QAChB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;QACjB,IAAI,CAAC,MAAM,CAAC,MAAM,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAA;QACjC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IACnB,CAAC;IACD,OAAO,UAAU,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAA;AACvC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,IAAY;IAC1C,MAAM,GAAG,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,CAAA;IACpC,MAAM,KAAK,GAAG,aAAa,CAAe,GAAG,CAAC,OAAO,CAAC,IAAI,aAAa,CAAe,GAAG,CAAC,KAAK,CAAC,CAAA;IAChG,IAAI,CAAC,KAAK;QAAE,MAAM,IAAI,KAAK,CAAC,gDAAgD,IAAI,EAAE,CAAC,CAAA;IACnF,OAAO,KAAK,CAAA;AACd,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,KAAa,EAAE,IAAY,EAAE,GAAW,EAAE,MAAoB,EAAE,YAAqB;IACrH,MAAM,IAAI,GAAG,YAAY,IAAI,WAAW,CAAC,GAAG,EAAE,MAAM,CAAC,CAAA;IACrD,MAAM,IAAI,GAAgB;QACxB,IAAI;QACJ,IAAI,EAAE,GAAG;QACT,KAAK,EAAE,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ;QACnD,KAAK,EAAE,iBAAiB,CAAC,GAAG,CAAC;KAC9B,CAAA;IACD,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;QAC3C,MAAM,IAAI,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAA;QACtC,eAAe,CAAC,cAAc,EAAE,GAAG,EAAE,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAA;QAC1E,OAAO,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,CAAA;IACrE,CAAC;IACD,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,aAAa,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAA;QAClE,eAAe,CAAC,cAAc,EAAE,GAAG,EAAE,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAA;QAC1E,OAAO,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,CAAA;IACrF,CAAC;IACD,MAAM,GAAG,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,CAAA;IACpC,OAAO,sBAAsB,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;AAC1C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,KAAa,EAAE,IAAY,EAAE,GAAW,EAAE,MAAoB,EAAE,aAAsB;IACnH,MAAM,KAAK,GAAG,aAAa,IAAI,iBAAiB,CAAC,GAAG,CAAC,CAAA;IACrD,MAAM,IAAI,GAAa;QACrB,KAAK;QACL,IAAI,EAAE,GAAG;QACT,KAAK,EAAE,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ;QACnD,KAAK,EAAE,iBAAiB,CAAC,GAAG,CAAC;KAC9B,CAAA;IACD,IAAI,MAAM,KAAK,UAAU,EAAE,CAAC;QAC1B,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;QAC3C,MAAM,IAAI,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAA;QACtC,MAAM,aAAa,GAAG,WAAW,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,KAAK,CAAA;QACzD,eAAe,CAAC,YAAY,EAAE,GAAG,EAAE,KAAK,EAAE,aAAa,CAAC,CAAA;QACxD,OAAO,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,EAAE,CAAA;IAC1E,CAAC;IACD,IAAI,MAAM,KAAK,UAAU,EAAE,CAAC;QAC1B,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,aAAa,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAA;QAClE,MAAM,aAAa,GAAG,WAAW,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,KAAK,CAAA;QACzD,eAAe,CAAC,YAAY,EAAE,GAAG,EAAE,KAAK,EAAE,aAAa,CAAC,CAAA;QACxD,OAAO,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,CAAA;IAC1F,CAAC;IACD,MAAM,GAAG,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,CAAA;IACpC,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,IAAI,GAAG,CAAA;IACnC,IAAI,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;QACzE,MAAM,MAAM,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAA;QACjC,MAAM,aAAa,GAAG,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,WAAW,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,KAAK,CAAA;QACxF,eAAe,CAAC,YAAY,EAAE,GAAG,EAAE,KAAK,EAAE,aAAa,CAAC,CAAA;QACxD,OAAO;YACL,GAAG,MAAM;YACT,GAAG,IAAI;YACP,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,aAAa;YACpB,OAAO,EAAE,aAAa,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC;SACrE,CAAA;IACH,CAAC;IACD,MAAM,aAAa,GAAG,WAAW,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,KAAK,CAAA;IACxD,eAAe,CAAC,YAAY,EAAE,GAAG,EAAE,KAAK,EAAE,aAAa,CAAC,CAAA;IACxD,OAAO;QACL,GAAG,IAAI;QACP,IAAI,EAAE,QAAQ;QACd,KAAK,EAAE,aAAa;QACpB,OAAO,EAAE,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC;KAClE,CAAA;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,KAAa,EAAE,IAAY,EAAE,GAAW,EAAE,MAAoB,EAAE,YAAqB;IAClH,MAAM,IAAI,GAAG,YAAY,IAAI,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,CAAA;IAClD,MAAM,IAAI,GAAa;QACrB,IAAI;QACJ,IAAI,EAAE,GAAG;QACT,KAAK,EAAE,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ;QACnD,KAAK,EAAE,iBAAiB,CAAC,GAAG,CAAC;KAC9B,CAAA;IACD,IAAI,MAAM,KAAK,UAAU,EAAE,CAAC;QAC1B,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;QAC3C,MAAM,IAAI,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAA;QACtC,MAAM,YAAY,GAAG,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;QAC9C,IAAI,YAAY,IAAI,YAAY,KAAK,MAAM;YAAE,eAAe,CAAC,WAAW,EAAE,GAAG,EAAE,IAAI,CAAC,IAAI,EAAE,YAAY,CAAC,CAAA;QACvG,OAAO,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,CAAA;IACrE,CAAC;IACD,IAAI,MAAM,KAAK,UAAU,EAAE,CAAC;QAC1B,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,aAAa,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAA;QAClE,MAAM,YAAY,GAAG,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;QAC9C,IAAI,YAAY,IAAI,YAAY,KAAK,MAAM;YAAE,eAAe,CAAC,WAAW,EAAE,GAAG,EAAE,IAAI,CAAC,IAAI,EAAE,YAAY,CAAC,CAAA;QACvG,OAAO,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,CAAA;IACrF,CAAC;IACD,MAAM,GAAG,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,CAAA;IACpC,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,IAAI,GAAG,CAAA;IACnC,IAAI,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;QACzE,MAAM,MAAM,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAA;QACjC,MAAM,YAAY,GAAG,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;QAChD,IAAI,YAAY,IAAI,YAAY,KAAK,MAAM;YAAE,eAAe,CAAC,WAAW,EAAE,GAAG,EAAE,IAAI,CAAC,IAAI,EAAE,YAAY,CAAC,CAAA;QACvG,OAAO;YACL,GAAG,MAAM;YACT,GAAG,IAAI;YACP,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,WAAW,CAAC,GAAG,EAAE,MAAM,CAAC;YAC7D,QAAQ,EAAE,WAAW,CAAC,MAAM,EAAE,UAAU,CAAC,IAAI,WAAW,CAAC,GAAG,EAAE,UAAU,CAAC;YACzE,IAAI,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,WAAW,CAAC,GAAG,EAAE,MAAM,CAAC;YAC7D,OAAO,EAAE,aAAa,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC;SACrE,CAAA;IACH,CAAC;IACD,OAAO;QACL,GAAG,IAAI;QACP,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,WAAW,CAAC,GAAG,EAAE,MAAM,CAAC;QAC9B,QAAQ,EAAE,WAAW,CAAC,GAAG,EAAE,UAAU,CAAC;QACtC,IAAI,EAAE,WAAW,CAAC,GAAG,EAAE,MAAM,CAAC;QAC9B,OAAO,EAAE,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC;KAClE,CAAA;AACH,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,UAA0B;IACtD,OAAO,EAAE,GAAG,UAAU,EAAE,IAAI,EAAE,UAAU,CAAC,IAAI,IAAI,QAAQ,EAAE,CAAA;AAC7D,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,UAAgD;IAC5E,OAAO;QACL,GAAG,UAAU;QACb,IAAI,EAAE,QAAQ;QACd,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,QAAiC,EAAE;YACpD,MAAM,IAAI,GAAG,OAAO,UAAU,CAAC,IAAI,KAAK,UAAU;gBAChD,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC;gBACxB,CAAC,CAAC,UAAU,CAAC,IAAI,IAAI,SAAS,CAAC,KAAK,CAAC,CAAA;YACvC,OAAO,GAAG,CAAC,IAAI,CAAC;gBACd,OAAO,EAAE,UAAU,CAAC,OAAO;gBAC3B,IAAI;gBACJ,KAAK,EAAE,OAAO,KAAK,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS;gBAChE,MAAM,EAAE,UAAU,CAAC,MAAM,IAAI,OAAO;gBACpC,MAAM,EAAE,UAAU,CAAC,MAAM;aAC1B,EAAE;gBACD,EAAE,EAAE,OAAO,KAAK,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,uBAAuB;aACtE,CAAC,CAAA;QACJ,CAAC;KACF,CAAA;AACH,CAAC;AAED,SAAS,SAAS,CAAC,KAA8B;IAC/C,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAA;IACvB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;QAAE,OAAO,EAAE,CAAA;IACnC,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,EAAmB,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAA;AAC3E,CAAC;AAED,SAAS,sBAAsB,CAAC,IAAiB,EAAE,GAAiB;IAClE,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,OAAO,IAAI,GAAG,CAAA;IAClD,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE,CAAC;QACnC,OAAO,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAiC,EAAE,CAAA;IAChF,CAAC;IACD,MAAM,MAAM,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAA;IACjC,eAAe,CAAC,cAAc,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;IAClF,OAAO;QACL,GAAG,MAAM;QACT,GAAG,IAAI;QACP,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,aAAa,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC;KACnG,CAAA;AACH,CAAC;AAED,KAAK,UAAU,YAAY,CAAC,IAAY;IACtC,OAAO,MAAM,kCAAC,aAAa,CAAC,IAAI,CAAC,CAAC,IAAI,EAA0B,CAAA;AAClE,CAAC;AAED,KAAK,SAAS,CAAC,CAAC,IAAI,CAAC,GAAW,EAAE,IAAY;IAC5C,KAAK,MAAM,IAAI,IAAI,MAAM,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QACtC,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;QAC5B,MAAM,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAA;QACzC,IAAI,UAAU,CAAC,GAAG,CAAC;YAAE,SAAQ;QAC7B,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,CAAA;QAC1B,IAAI,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;YACpB,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC;gBAAE,MAAM,KAAK,CAAA;QACzD,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,CAAA;QACZ,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,YAAY,CAAC,IAAY;IAChC,OAAO,eAAe,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAA;AAChE,CAAC;AAED,SAAS,WAAW,CAAC,IAAY;IAC/B,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,CAAC,CAAA;IACjC,IAAI,MAAM,EAAE,CAAC;QACX,IAAI,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC;YAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,CAAA;QAClE,IAAI,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC;YAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,CAAA;QAChE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,CAAA;IACjC,CAAC;IAED,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IACtC,MAAM,IAAI,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;IACzB,IAAI,CAAC,IAAI;QAAE,OAAO,SAAS,CAAA;IAC3B,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAA;IAC5D,IAAI,CAAC,QAAQ;QAAE,OAAO,SAAS,CAAA;IAC/B,MAAM,cAAc,GAAG,IAAI,QAAQ,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,EAAkB,CAAA;IAEvE,IAAI,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,EAAE,CAAC;QAC1B,MAAM,IAAI,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAA;QACvC,OAAO,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,CAAA;IAC7E,CAAC;IACD,IAAI,QAAQ,CAAC,CAAC,CAAC,KAAK,MAAM,EAAE,CAAC;QAC3B,MAAM,KAAK,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAA;QACtC,OAAO,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAA;IAC5E,CAAC;IACD,MAAM,IAAI,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAA;IACpC,OAAO,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,CAAA;AAC1E,CAAC;AAED,SAAS,mBAAmB,CAAC,KAAe;IAC1C,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IAC/E,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,MAAM,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IACtG,OAAO,SAAS,CAAA;AAClB,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAe;IACxC,MAAM,KAAK,GAAG,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,CAAA;IACxC,OAAO,KAAK,IAAI,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;AAC9E,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAe;IACvC,MAAM,KAAK,GAAG,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAA;IACvC,OAAO,KAAK,IAAI,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;AAC9E,CAAC;AAED,SAAS,UAAU,CAAC,IAAY;IAC9B,OAAO,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC;WAClC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;WACxB,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC;WAC3B,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC;WAC3B,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;WACzB,iBAAiB,CAAC,IAAI,CAAC;WACvB,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC;WACzB,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAA;AAChC,CAAC;AAED,SAAS,iBAAiB,CAAC,IAAY;IACrC,OAAO,IAAI,KAAK,MAAM;WACjB,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,IAAI,KAAK,cAAc,CAAC;WACrD,IAAI,KAAK,QAAQ;WACjB,IAAI,KAAK,SAAS;WAClB,IAAI,KAAK,SAAS;WAClB,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;WACvB,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;WACvB,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAA;AAClC,CAAC;AAED,SAAS,iBAAiB,CAAC,IAAY;IACrC,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;WAC1B,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;WACvB,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAA;AAChC,CAAC;AAED,SAAS,WAAW,CAAC,GAAW,EAAE,MAAoB;IACpD,IAAI,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;IACvC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAA;IACjC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,qBAAqB,EAAE,EAAE,CAAC,CAAA;IAC9C,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;AAC3C,CAAC;AAED,SAAS,QAAQ,CAAC,GAAW,EAAE,MAAoB;IACjD,OAAO,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAA;AAC/C,CAAC;AAED,SAAS,iBAAiB,CAAC,GAAW;IACpC,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IAC9C,MAAM,KAAK,GAAG,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,CAAA;IACxC,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;AAClD,CAAC;AAED,SAAS,iBAAiB,CAAC,GAAW;IACpC,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IACrC,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;AACnD,CAAC;AAED,SAAS,kBAAkB,CAAC,GAAW;IACrC,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IACrC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,MAAM,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,UAAU;QAAE,OAAO,KAAK,CAAC,CAAC,CAAC,CAAA;IAC9G,OAAO,SAAS,CAAA;AAClB,CAAC;AAED,SAAS,WAAW,CAAC,KAA6B;IAChD,MAAM,MAAM,GAAoC,EAAE,CAAA;IAClD,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACtC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAA;QAC9C,MAAM,IAAI,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC,CAAA;QACvB,IAAI,IAAI;YAAE,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,SAAS,IAAI,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAA;IACtE,CAAC;IACD,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,CAAA;AAC3G,CAAC;AAED,SAAS,aAAa,CAAC,IAAY;IACjC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;QAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAA;IAC9D,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,CAAA;IACtC,IAAI,GAAG,GAAG,CAAC;QAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAA;IAC5C,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;IAC9B,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAA;IAChC,MAAM,IAAI,GAAiB,EAAE,CAAA;IAC7B,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACnC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAA;QACvD,MAAM,GAAG,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC,CAAA;QACtB,IAAI,CAAC,GAAG;YAAE,SAAQ;QAClB,IAAI,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAA;IAC3C,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAA;AACvB,CAAC;AAED,SAAS,iBAAiB,CAAC,IAAY;IACrC,MAAM,IAAI,GAAiB,EAAE,CAAA;IAC7B,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;QACvC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAA;QAC3B,IAAI,CAAC,OAAO;YAAE,SAAQ;QACtB,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,MAAK;QACnC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAA;QAClE,IAAI,KAAK;YAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAA;IACzD,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC;AAED,SAAS,WAAW,CAAC,KAAa;IAChC,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,EAAE,CAAA;IACzB,IAAI,IAAI,KAAK,MAAM;QAAE,OAAO,IAAI,CAAA;IAChC,IAAI,IAAI,KAAK,OAAO;QAAE,OAAO,KAAK,CAAA;IAClC,IAAI,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,MAAM,CAAC,IAAI,CAAC,CAAA;IAC7C,OAAO,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAA;AACzC,CAAC;AAED,SAAS,OAAO,CAAC,IAAY;IAC3B,OAAO,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;AACvD,CAAC;AAED,KAAK,UAAU,aAAa,CAAC,KAAe;IAC1C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,MAAM,MAAM,CAAC,IAAI,CAAC;YAAE,OAAO,IAAI,CAAA;IACrC,CAAC;IACD,OAAO,SAAS,CAAA;AAClB,CAAC;AAED,KAAK,UAAU,MAAM,CAAC,IAAY;IAChC,IAAI,CAAC;QACH,MAAM,IAAI,CAAC,IAAI,CAAC,CAAA;QAChB,OAAO,IAAI,CAAA;IACb,CAAC;IAAC,OAAO,KAAc,EAAE,CAAC;QACxB,IAAI,WAAW,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ;YAAE,OAAO,KAAK,CAAA;QAC/D,MAAM,KAAK,CAAA;IACb,CAAC;AACH,CAAC;AAED,SAAS,cAAc,CAAC,KAAc;IACpC,OAAO,QAAQ,CAAC,KAAK,CAAiB,CAAA;AACxC,CAAC;AAED,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAqB,CAAC,CAAC,CAAC,EAAE,CAAA;AACxE,CAAC;AAED,SAAS,WAAW,CAAC,KAA8B,EAAE,GAAW;IAC9D,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAA;IACxB,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAA;AACtD,CAAC;AAED,SAAS,eAAe,CAAC,IAAY,EAAE,IAAY,EAAE,SAA6B,EAAE,aAAiC;IACnH,IAAI,CAAC,SAAS,IAAI,CAAC,aAAa,IAAI,SAAS,KAAK,aAAa;QAAE,OAAM;IACvE,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,gBAAgB,IAAI,mBAAmB,SAAS,qBAAqB,aAAa,EAAE,CAAC,CAAA;AAC9G,CAAC;AAED,SAAS,aAAa,CAA0C,KAAc;IAC5E,OAAO,OAAO,KAAK,KAAK,UAAU,CAAC,CAAC,CAAC,KAAU,CAAC,CAAC,CAAC,SAAS,CAAA;AAC7D,CAAC;AAED,SAAS,SAAS,CAAC,KAAiB;IAClC,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;AACzD,CAAC;AAED,SAAS,UAAU,CAAC,IAAY;IAC9B,IAAI,IAAI,KAAK,aAAa;QAAE,OAAO,QAAQ,CAAA;IAC3C,IAAI,kBAAkB,CAAC,IAAI,CAAC;QAAE,OAAO,OAAO,CAAA;IAC5C,IAAI,WAAW,CAAC,IAAI,CAAC;QAAE,OAAO,QAAQ,CAAA;IACtC,IAAI,iBAAiB,CAAC,IAAI,CAAC;QAAE,OAAO,QAAQ,CAAA;IAC5C,OAAO,QAAQ,CAAA;AACjB,CAAC;AAED,SAAS,aAAa,CAAC,IAAgD;IACrE,MAAM,MAAM,GAAG,IAA+B,CAAA;IAC9C,OAAO;QACL,IAAI,EAAE,MAAM,IAAI,IAAI,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;QAC7E,KAAK,EAAE,OAAO,IAAI,IAAI,IAAI,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS;QACjF,IAAI,EAAE,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;QAC3D,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,WAAW,EAAE,OAAO,MAAM,CAAC,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS;QACpF,KAAK,EAAE,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS;QAClE,QAAQ,EAAE,OAAO,MAAM,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;QAC5E,OAAO,EAAE,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS;QACxE,QAAQ,EAAE,OAAO,MAAM,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;QAC3E,IAAI,EAAE,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;QAC/D,IAAI,EAAE,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;KAChE,CAAA;AACH,CAAC;AAED,SAAS,aAAa,CAAC,CAAwB,EAAE,CAAwB;IACvE,OAAO,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,CAAA;AAC3G,CAAC;AAED,SAAS,WAAW,CAAC,KAAc;IACjC,OAAO,KAAK,YAAY,KAAK,CAAA;AAC/B,CAAC"}
@@ -0,0 +1,53 @@
1
+ import type { AgentDefinition, RuntimeContext, RuntimeCommand, RuntimeCron, RuntimeHook, RuntimeImage, RuntimeLogin } from '@kruntime/komputer';
2
+ type CommandHandler = NonNullable<RuntimeCommand['handler']>;
3
+ type CronHandler = NonNullable<RuntimeCron['handler']>;
4
+ type HookHandler = NonNullable<RuntimeHook['handler']>;
5
+ export interface NeedOptions {
6
+ description?: string;
7
+ fallback?: string;
8
+ path?: string;
9
+ mode?: 'ro' | 'rw';
10
+ [key: string]: unknown;
11
+ }
12
+ export interface NeedDeclaration extends NeedOptions {
13
+ required: boolean;
14
+ }
15
+ export interface StringArgSchema {
16
+ type: 'string';
17
+ required?: boolean;
18
+ defaultValue?: string;
19
+ description?: string;
20
+ optional(): StringArgSchema;
21
+ default(value: string): StringArgSchema;
22
+ describe(description: string): StringArgSchema;
23
+ }
24
+ export declare function image<T extends RuntimeImage>(definition: T): T;
25
+ export declare function agent<T extends AgentDefinition>(definition: T): T;
26
+ export declare function command<T extends RuntimeCommand>(definition: T): T;
27
+ export declare function command(handler: CommandHandler): RuntimeCommand;
28
+ export declare function defineCommand<T extends RuntimeCommand>(definition: T): RuntimeCommand;
29
+ export declare function defineCommand(handler: CommandHandler): RuntimeCommand;
30
+ export declare function bridgeCommand<T extends RuntimeCommand & {
31
+ command: string;
32
+ }>(definition: T): RuntimeCommand;
33
+ export declare function cron<T extends RuntimeCron>(definition: T): T;
34
+ export declare function cron(handler: CronHandler): RuntimeCron;
35
+ export declare function hook<T extends RuntimeHook>(definition: T): T;
36
+ export declare function hook(event: string, handler: HookHandler): RuntimeHook;
37
+ export declare function login<T extends RuntimeLogin>(definition: T): T;
38
+ export declare const model: {
39
+ required(options?: NeedOptions): NeedDeclaration;
40
+ optional(options?: NeedOptions): NeedDeclaration;
41
+ };
42
+ export declare const secret: {
43
+ required(options?: NeedOptions): NeedDeclaration;
44
+ optional(options?: NeedOptions): NeedDeclaration;
45
+ };
46
+ export declare const mount: {
47
+ required(options?: NeedOptions): NeedDeclaration;
48
+ optional(options?: NeedOptions): NeedDeclaration;
49
+ };
50
+ export declare const z: {
51
+ string(): StringArgSchema;
52
+ };
53
+ export type { RuntimeContext };
package/dist/index.js ADDED
@@ -0,0 +1,93 @@
1
+ export function image(definition) {
2
+ return definition;
3
+ }
4
+ export function agent(definition) {
5
+ return definition;
6
+ }
7
+ export function command(definition) {
8
+ if (typeof definition === 'function')
9
+ return { kind: 'module', handler: definition };
10
+ return { ...definition, kind: definition.kind ?? 'module' };
11
+ }
12
+ export function defineCommand(definition) {
13
+ return command(definition);
14
+ }
15
+ export function bridgeCommand(definition) {
16
+ return {
17
+ ...definition,
18
+ kind: 'module',
19
+ async handler(ctx, input = {}) {
20
+ const argv = typeof definition.argv === 'function'
21
+ ? definition.argv(input)
22
+ : definition.argv ?? inputArgv(input);
23
+ return ctx.exec({
24
+ command: definition.command,
25
+ argv,
26
+ stdin: typeof input.stdin === 'string' ? input.stdin : undefined,
27
+ remote: definition.remote ?? 'local',
28
+ limits: definition.limits,
29
+ }, {
30
+ by: typeof input.by === 'string' ? input.by : 'system:bridge-command',
31
+ });
32
+ },
33
+ };
34
+ }
35
+ function inputArgv(input) {
36
+ const argv = input.argv;
37
+ if (!Array.isArray(argv))
38
+ return [];
39
+ return argv.filter((value) => typeof value === 'string');
40
+ }
41
+ export function cron(definition) {
42
+ if (typeof definition === 'function')
43
+ return { name: 'cron', kind: 'module', handler: definition };
44
+ return definition;
45
+ }
46
+ export function hook(definition, handler) {
47
+ if (typeof definition === 'string')
48
+ return { event: definition, kind: 'module', handler };
49
+ return definition;
50
+ }
51
+ export function login(definition) {
52
+ return definition;
53
+ }
54
+ export const model = needsFactory();
55
+ export const secret = needsFactory();
56
+ export const mount = {
57
+ required(options = {}) {
58
+ return { ...options, required: true };
59
+ },
60
+ optional(options = {}) {
61
+ return { ...options, required: false };
62
+ },
63
+ };
64
+ export const z = {
65
+ string() {
66
+ return makeStringSchema({ type: 'string', required: true });
67
+ },
68
+ };
69
+ function needsFactory() {
70
+ return {
71
+ required(options = {}) {
72
+ return { ...options, required: true };
73
+ },
74
+ optional(options = {}) {
75
+ return { ...options, required: false };
76
+ },
77
+ };
78
+ }
79
+ function makeStringSchema(state) {
80
+ return {
81
+ ...state,
82
+ optional() {
83
+ return makeStringSchema({ ...state, required: false });
84
+ },
85
+ default(value) {
86
+ return makeStringSchema({ ...state, required: false, defaultValue: value });
87
+ },
88
+ describe(description) {
89
+ return makeStringSchema({ ...state, description });
90
+ },
91
+ };
92
+ }
93
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../packages/kimage/src/index.ts"],"names":[],"mappings":"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"}
package/dist/node.d.ts ADDED
@@ -0,0 +1 @@
1
+ export { bridgeCommand, buildImageFromDir, defineCommand, loadCommand, loadCron, loadHook, loadImageFromDir, loadLogin, } from './active-files.js';
package/dist/node.js ADDED
@@ -0,0 +1,2 @@
1
+ export { bridgeCommand, buildImageFromDir, defineCommand, loadCommand, loadCron, loadHook, loadImageFromDir, loadLogin, } from "./active-files.js";
2
+ //# sourceMappingURL=node.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node.js","sourceRoot":"","sources":["../../../../packages/kimage/src/node.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,iBAAiB,EACjB,aAAa,EACb,WAAW,EACX,QAAQ,EACR,QAAQ,EACR,gBAAgB,EAChB,SAAS,GACV,MAAM,mBAAmB,CAAA"}
package/package.json ADDED
@@ -0,0 +1,28 @@
1
+ {
2
+ "name": "@kruntime/kimage",
3
+ "version": "0.1.0",
4
+ "type": "module",
5
+ "description": "Image authoring and source loading suite for K Komputer images.",
6
+ "exports": {
7
+ ".": {
8
+ "types": "./dist/index.d.ts",
9
+ "import": "./dist/index.js"
10
+ },
11
+ "./node": {
12
+ "types": "./dist/node.d.ts",
13
+ "import": "./dist/node.js"
14
+ }
15
+ },
16
+ "types": "./dist/index.d.ts",
17
+ "files": [
18
+ "dist",
19
+ "README.md"
20
+ ],
21
+ "dependencies": {
22
+ "@kruntime/komputer": "0.1.0"
23
+ },
24
+ "license": "UNLICENSED",
25
+ "publishConfig": {
26
+ "access": "public"
27
+ }
28
+ }