@12ui/design 0.2.31 → 0.2.32
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 +15 -15
- package/SKILL.md +1 -1
- package/dist/cli-branch-command.d.ts +1 -6
- package/dist/cli-branch-command.d.ts.map +1 -1
- package/dist/cli-branch-command.js +0 -26
- package/dist/cli-branch-command.js.map +1 -1
- package/dist/cli-capabilities.d.ts +5 -7
- package/dist/cli-capabilities.d.ts.map +1 -1
- package/dist/cli-capabilities.js +5 -8
- package/dist/cli-capabilities.js.map +1 -1
- package/dist/cli-draft-command.d.ts +13 -10
- package/dist/cli-draft-command.d.ts.map +1 -1
- package/dist/cli-draft-command.js +201 -111
- package/dist/cli-draft-command.js.map +1 -1
- package/dist/cli-help/design.d.ts +4 -4
- package/dist/cli-help/design.d.ts.map +1 -1
- package/dist/cli-help/design.js +6 -4
- package/dist/cli-help/design.js.map +1 -1
- package/dist/cli-help/index.d.ts +4 -4
- package/dist/cli-next-command.d.ts +4 -0
- package/dist/cli-next-command.d.ts.map +1 -1
- package/dist/cli-next-command.js +74 -24
- package/dist/cli-next-command.js.map +1 -1
- package/dist/cli-persistence-report.d.ts.map +1 -1
- package/dist/cli-persistence-report.js +7 -2
- package/dist/cli-persistence-report.js.map +1 -1
- package/dist/cli-persistence.d.ts +5 -2
- package/dist/cli-persistence.d.ts.map +1 -1
- package/dist/cli-persistence.js +118 -40
- package/dist/cli-persistence.js.map +1 -1
- package/dist/cli-run.d.ts +2 -2
- package/dist/cli-run.d.ts.map +1 -1
- package/dist/cli-run.js +3 -63
- package/dist/cli-run.js.map +1 -1
- package/dist/cli-usage.d.ts.map +1 -1
- package/dist/cli-usage.js +5 -4
- package/dist/cli-usage.js.map +1 -1
- package/dist/cli.js +2 -6
- package/dist/cli.js.map +1 -1
- package/dist/draft-adoption.d.ts +0 -6
- package/dist/draft-adoption.d.ts.map +1 -1
- package/dist/draft-adoption.js +0 -14
- package/dist/draft-adoption.js.map +1 -1
- package/dist/draft-dispatch-attempt.d.ts +23 -0
- package/dist/draft-dispatch-attempt.d.ts.map +1 -0
- package/dist/draft-dispatch-attempt.js +42 -0
- package/dist/draft-dispatch-attempt.js.map +1 -0
- package/dist/draft-workspace.d.ts +0 -2
- package/dist/draft-workspace.d.ts.map +1 -1
- package/dist/draft-workspace.js +0 -2
- package/dist/draft-workspace.js.map +1 -1
- package/dist/legacy-cli-cleanup.d.ts.map +1 -1
- package/dist/legacy-cli-cleanup.js +3 -2
- package/dist/legacy-cli-cleanup.js.map +1 -1
- package/dist/legacy-npm-global-cli-recognition.d.ts.map +1 -1
- package/dist/legacy-npm-global-cli-recognition.js +4 -3
- package/dist/legacy-npm-global-cli-recognition.js.map +1 -1
- package/dist/legacy-skill-catalog.d.ts.map +1 -1
- package/dist/legacy-skill-catalog.js +15 -0
- package/dist/legacy-skill-catalog.js.map +1 -1
- package/dist/next-wait-lease.d.ts +12 -2
- package/dist/next-wait-lease.d.ts.map +1 -1
- package/dist/next-wait-lease.js +47 -43
- package/dist/next-wait-lease.js.map +1 -1
- package/dist/next-wait-process.d.ts +6 -14
- package/dist/next-wait-process.d.ts.map +1 -1
- package/dist/next-wait-process.js +11 -29
- package/dist/next-wait-process.js.map +1 -1
- package/dist/run-journal-commands.d.ts +1 -1
- package/dist/run-journal-commands.d.ts.map +1 -1
- package/dist/run-journal-commands.js +2 -6
- package/dist/run-journal-commands.js.map +1 -1
- package/dist/run-journal.d.ts +9 -13
- package/dist/run-journal.d.ts.map +1 -1
- package/dist/run-journal.js +9 -13
- package/dist/run-journal.js.map +1 -1
- package/open-design.json +2 -2
- package/package.json +1 -1
- package/skills/12ui-design/SKILL.md +4 -4
- package/dist/cli-detach.d.ts +0 -70
- package/dist/cli-detach.d.ts.map +0 -1
- package/dist/cli-detach.js +0 -163
- package/dist/cli-detach.js.map +0 -1
package/dist/cli-detach.js
DELETED
|
@@ -1,163 +0,0 @@
|
|
|
1
|
-
import { spawn } from 'node:child_process';
|
|
2
|
-
import { mkdir, open, readFile, stat } from 'node:fs/promises';
|
|
3
|
-
import path from 'node:path';
|
|
4
|
-
import { INTERNAL_DRAFT_WORKER_ENV } from './cli-draft-command.js';
|
|
5
|
-
import { CliRefusal } from './cli-refusal.js';
|
|
6
|
-
import { createLongRunningProgress, nextActionLine, } from './cli-progress.js';
|
|
7
|
-
/** How much of a refused worker's output to put in front of the caller. */
|
|
8
|
-
const REFUSAL_LOG_LINES = 24;
|
|
9
|
-
const readJson = async (file) => {
|
|
10
|
-
try {
|
|
11
|
-
return JSON.parse(await readFile(file, 'utf8'));
|
|
12
|
-
}
|
|
13
|
-
catch {
|
|
14
|
-
return null;
|
|
15
|
-
}
|
|
16
|
-
};
|
|
17
|
-
const exists = async (file) => {
|
|
18
|
-
try {
|
|
19
|
-
await stat(file);
|
|
20
|
-
return true;
|
|
21
|
-
}
|
|
22
|
-
catch {
|
|
23
|
-
return false;
|
|
24
|
-
}
|
|
25
|
-
};
|
|
26
|
-
const delay = async (milliseconds) => (new Promise((resolve) => { setTimeout(resolve, milliseconds); }));
|
|
27
|
-
export const spawnDetachedRun = async (args) => {
|
|
28
|
-
const write = args.write ?? ((line) => { process.stderr.write(`${line}\n`); });
|
|
29
|
-
const { work } = args;
|
|
30
|
-
const progress = args.progress ?? createLongRunningProgress({
|
|
31
|
-
label: work.label,
|
|
32
|
-
typicalSeconds: work.typicalSeconds,
|
|
33
|
-
write,
|
|
34
|
-
});
|
|
35
|
-
progress.update({ stage: 'background_start', detail: `output ${work.logFile}` });
|
|
36
|
-
// The run directory does not exist yet on a first run: the worker creates it.
|
|
37
|
-
await mkdir(path.dirname(work.logFile), { recursive: true });
|
|
38
|
-
const logHandle = await open(work.logFile, 'a');
|
|
39
|
-
const child = (args.spawnImpl ?? spawn)(process.execPath, [args.cliPath, ...args.argv, '--wait'], {
|
|
40
|
-
cwd: process.cwd(),
|
|
41
|
-
detached: true,
|
|
42
|
-
stdio: ['ignore', logHandle.fd, logHandle.fd],
|
|
43
|
-
env: args.environment ?? process.env,
|
|
44
|
-
});
|
|
45
|
-
let exitCode = null;
|
|
46
|
-
child.on('exit', (code) => { exitCode = code ?? 0; });
|
|
47
|
-
child.on('error', () => { exitCode = -1; });
|
|
48
|
-
const deadline = Date.now() + (work.startTimeoutMs ?? 30_000);
|
|
49
|
-
const identityFile = work.identityFile ?? work.startedFile;
|
|
50
|
-
let identity = null;
|
|
51
|
-
let started = false;
|
|
52
|
-
while (Date.now() < deadline) {
|
|
53
|
-
identity = await readJson(identityFile);
|
|
54
|
-
const hosted = identity?.hosted && typeof identity.hosted === 'object'
|
|
55
|
-
? identity.hosted
|
|
56
|
-
: null;
|
|
57
|
-
if (identity?.runId || hosted?.runId) {
|
|
58
|
-
started = true;
|
|
59
|
-
break;
|
|
60
|
-
}
|
|
61
|
-
if (await exists(work.startedFile)) {
|
|
62
|
-
// Proof of start is enough to hand back control. The run id is reported
|
|
63
|
-
// when it is already there and never waited for — the status command
|
|
64
|
-
// works from the directory alone, and waiting on it would reintroduce
|
|
65
|
-
// exactly the blocking this exists to remove.
|
|
66
|
-
identity = await readJson(identityFile);
|
|
67
|
-
started = true;
|
|
68
|
-
break;
|
|
69
|
-
}
|
|
70
|
-
if (exitCode !== null)
|
|
71
|
-
break;
|
|
72
|
-
await delay(args.pollIntervalMs ?? 250);
|
|
73
|
-
}
|
|
74
|
-
await logHandle.close();
|
|
75
|
-
if (!started && exitCode !== null && exitCode !== 0) {
|
|
76
|
-
// The worker refused before it owned anything — a bad flag, an existing
|
|
77
|
-
// attempt. That belongs in front of the caller, not buried in a log file.
|
|
78
|
-
//
|
|
79
|
-
// The tail is generous because a refusal is the one thing this path exists
|
|
80
|
-
// to relay, and the useful ones are multi-line: the missing-winner refusal
|
|
81
|
-
// names both accepted forms and a command to paste, and a tail that cut its
|
|
82
|
-
// first line would drop what was actually missing.
|
|
83
|
-
const log = await readFile(work.logFile, 'utf8').catch(() => '');
|
|
84
|
-
child.unref();
|
|
85
|
-
progress.finish('stopped', {
|
|
86
|
-
detail: log.trim().split('\n').slice(-1)[0]
|
|
87
|
-
|| `${work.label} exited ${exitCode} before it started`,
|
|
88
|
-
next: `full worker log: ${work.logFile}`,
|
|
89
|
-
});
|
|
90
|
-
throw new CliRefusal(log.trim().split('\n').slice(-REFUSAL_LOG_LINES).join('\n')
|
|
91
|
-
|| `${work.label} exited ${exitCode} before it started. Log: ${work.logFile}`, 'detached_worker_refused');
|
|
92
|
-
}
|
|
93
|
-
child.unref();
|
|
94
|
-
const hosted = identity?.hosted && typeof identity.hosted === 'object'
|
|
95
|
-
? identity.hosted
|
|
96
|
-
: null;
|
|
97
|
-
const runId = typeof identity?.runId === 'string'
|
|
98
|
-
? identity.runId
|
|
99
|
-
: typeof hosted?.runId === 'string'
|
|
100
|
-
? hosted.runId
|
|
101
|
-
: undefined;
|
|
102
|
-
const nextAction = nextActionLine({
|
|
103
|
-
what: `A ${work.label}`,
|
|
104
|
-
typicalSeconds: work.typicalSeconds,
|
|
105
|
-
statusCommand: work.statusCommand,
|
|
106
|
-
waitHint: 'or re-run with --wait to block in this shell instead',
|
|
107
|
-
});
|
|
108
|
-
progress.finish('detached', {
|
|
109
|
-
detail: 'the run continues in a background worker; nothing settles in this shell',
|
|
110
|
-
artifacts: [
|
|
111
|
-
{
|
|
112
|
-
name: work.label,
|
|
113
|
-
state: `running detached${runId ? ` (run ${runId})` : ''}${child.pid ? `, pid ${child.pid}` : ''}`,
|
|
114
|
-
},
|
|
115
|
-
{ name: 'worker log', state: 'streaming', path: work.logFile },
|
|
116
|
-
],
|
|
117
|
-
next: `${work.statusCommand} reports progress; re-run with --wait to block instead`,
|
|
118
|
-
});
|
|
119
|
-
return {
|
|
120
|
-
detached: true,
|
|
121
|
-
pid: child.pid ?? null,
|
|
122
|
-
started,
|
|
123
|
-
...(runId ? { runId } : {}),
|
|
124
|
-
logFile: work.logFile,
|
|
125
|
-
statusCommand: work.statusCommand,
|
|
126
|
-
nextAction,
|
|
127
|
-
};
|
|
128
|
-
};
|
|
129
|
-
/** `12ui branch execute|resume` without `--wait`. */
|
|
130
|
-
export const detachBranchRun = async (args) => spawnDetachedRun({
|
|
131
|
-
cliPath: args.cliPath,
|
|
132
|
-
argv: args.argv,
|
|
133
|
-
...(args.spawnImpl ? { spawnImpl: args.spawnImpl } : {}),
|
|
134
|
-
...(args.progress ? { progress: args.progress } : {}),
|
|
135
|
-
work: {
|
|
136
|
-
label: args.label ?? 'branch execute',
|
|
137
|
-
startedFile: path.join(args.outDir, 'branch.attempt.json'),
|
|
138
|
-
// The progress record carries the run id, which appears once the claim
|
|
139
|
-
// lands (10-20s) — worth waiting for so the report names the run.
|
|
140
|
-
identityFile: path.join(args.outDir, 'branch.progress.json'),
|
|
141
|
-
logFile: path.join(args.outDir, 'branch.log'),
|
|
142
|
-
statusCommand: `12ui next ${args.statusTarget ?? args.outDir}`,
|
|
143
|
-
typicalSeconds: args.typicalSeconds,
|
|
144
|
-
startTimeoutMs: 40_000,
|
|
145
|
-
},
|
|
146
|
-
});
|
|
147
|
-
/** `12ui draft` without `--wait`: the same command resumes its recorded hosted run. */
|
|
148
|
-
export const detachDraftRun = async (args) => spawnDetachedRun({
|
|
149
|
-
cliPath: args.cliPath,
|
|
150
|
-
argv: [...args.argv, '--resume-run', args.prepared.runDir],
|
|
151
|
-
...(args.spawnImpl ? { spawnImpl: args.spawnImpl } : {}),
|
|
152
|
-
...(args.progress ? { progress: args.progress } : {}),
|
|
153
|
-
environment: { ...process.env, [INTERNAL_DRAFT_WORKER_ENV]: '1' },
|
|
154
|
-
work: {
|
|
155
|
-
label: 'hosted draft',
|
|
156
|
-
startedFile: path.join(args.prepared.runDir, 'draft.dispatch.json'),
|
|
157
|
-
logFile: path.join(args.prepared.runDir, 'draft.log'),
|
|
158
|
-
statusCommand: `12ui next ${args.prepared.runDir}`,
|
|
159
|
-
typicalSeconds: args.typicalSeconds,
|
|
160
|
-
startTimeoutMs: 20_000,
|
|
161
|
-
},
|
|
162
|
-
});
|
|
163
|
-
//# sourceMappingURL=cli-detach.js.map
|
package/dist/cli-detach.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cli-detach.js","sourceRoot":"","sources":["../src/cli-detach.ts"],"names":[],"mappings":"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"}
|