linersh 0.5.7 → 1.0.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 +65 -165
- package/bin/liner.js +82 -44
- package/cli-update-docs/ABOUT.md +16 -16
- package/cli-update-docs/AI-HANDOFF.md +62 -204
- package/cli-update-docs/CURATION.md +48 -19
- package/cli-update-docs/JTBD-MASTER-PROMPT-ABOUT.md +9 -12
- package/cli-update-docs/JTBD-MASTER-PROMPT.md +1 -1
- package/cli-update-docs/LINER-MASTER.md +77 -63
- package/cli-update-docs/LINER-MD-PRD.md +531 -0
- package/cli-update-docs/MIXTAPE-FORMAT.md +76 -44
- package/cli-update-docs/PLATFORM.md +47 -46
- package/cli-update-docs/README.md +6 -6
- package/cli-update-docs/SKILL.md +72 -37
- package/cli-update-docs/TUI-BACKLOG.md +205 -26
- package/cli-update-docs/quality-check-tests.md +256 -8
- package/cli-update-docs/source-finding-tactics.md +140 -3
- package/cli-update-docs/source-quality-hierarchy.md +83 -0
- package/cli-update-docs/synthesis-guidance.md +19 -5
- package/dist/agents/artifact-validation.js +440 -0
- package/dist/agents/artifact-validation.js.map +1 -0
- package/dist/agents/candidate-longlist.js +100 -0
- package/dist/agents/candidate-longlist.js.map +1 -0
- package/dist/agents/detect.js +3 -2
- package/dist/agents/detect.js.map +1 -1
- package/dist/agents/evaluation-assembly.js +270 -0
- package/dist/agents/evaluation-assembly.js.map +1 -0
- package/dist/agents/headless-runner.js +227 -0
- package/dist/agents/headless-runner.js.map +1 -0
- package/dist/agents/jtbd-clarify.js +42 -41
- package/dist/agents/jtbd-clarify.js.map +1 -1
- package/dist/agents/models.js +6 -7
- package/dist/agents/models.js.map +1 -1
- package/dist/agents/prompts.js +220 -20
- package/dist/agents/prompts.js.map +1 -1
- package/dist/agents/runner.js +462 -21
- package/dist/agents/runner.js.map +1 -1
- package/dist/phases.js +13 -13
- package/dist/phases.js.map +1 -1
- package/dist/source-inbox.js +297 -0
- package/dist/source-inbox.js.map +1 -0
- package/dist/version.js +3 -9
- package/dist/version.js.map +1 -1
- package/dist/yaml-io.js +42 -11
- package/dist/yaml-io.js.map +1 -1
- package/package.json +26 -23
- package/cli-update-docs/JOB-STORY-MIGRATION.md +0 -99
- package/dist/App.js +0 -220
- package/dist/App.js.map +0 -1
- package/dist/colors.js +0 -132
- package/dist/colors.js.map +0 -1
- package/dist/components/Header.js +0 -15
- package/dist/components/Header.js.map +0 -1
- package/dist/components/KeyHints.js +0 -17
- package/dist/components/KeyHints.js.map +0 -1
- package/dist/components/LabeledBox.js +0 -53
- package/dist/components/LabeledBox.js.map +0 -1
- package/dist/components/NextSteps.js +0 -18
- package/dist/components/NextSteps.js.map +0 -1
- package/dist/index.js +0 -17
- package/dist/index.js.map +0 -1
- package/dist/screens/AgentSetup.js +0 -224
- package/dist/screens/AgentSetup.js.map +0 -1
- package/dist/screens/BootSplash.js +0 -163
- package/dist/screens/BootSplash.js.map +0 -1
- package/dist/screens/CompileView.js +0 -567
- package/dist/screens/CompileView.js.map +0 -1
- package/dist/screens/FramingConfirmReview.js +0 -197
- package/dist/screens/FramingConfirmReview.js.map +0 -1
- package/dist/screens/Gate1Review.js +0 -147
- package/dist/screens/Gate1Review.js.map +0 -1
- package/dist/screens/Gate2Review.js +0 -162
- package/dist/screens/Gate2Review.js.map +0 -1
- package/dist/screens/ImportPrompt.js +0 -173
- package/dist/screens/ImportPrompt.js.map +0 -1
- package/dist/screens/JsSetup.js +0 -77
- package/dist/screens/JsSetup.js.map +0 -1
- package/dist/screens/LocalFilePicker.js +0 -139
- package/dist/screens/LocalFilePicker.js.map +0 -1
- package/dist/screens/NewMixtapeWizard.js +0 -662
- package/dist/screens/NewMixtapeWizard.js.map +0 -1
- package/dist/screens/PhaseRunner.js +0 -1203
- package/dist/screens/PhaseRunner.js.map +0 -1
- package/dist/screens/ProcessManifest.js +0 -160
- package/dist/screens/ProcessManifest.js.map +0 -1
- package/dist/screens/ProjectHub.js +0 -557
- package/dist/screens/ProjectHub.js.map +0 -1
- package/dist/screens/SourceModal.js +0 -269
- package/dist/screens/SourceModal.js.map +0 -1
- package/dist/screens/TapeBrowser.js +0 -312
- package/dist/screens/TapeBrowser.js.map +0 -1
- package/dist/screens/TapeDraftReview.js +0 -444
- package/dist/screens/TapeDraftReview.js.map +0 -1
- package/dist/screens/TapeEditor.js +0 -310
- package/dist/screens/TapeEditor.js.map +0 -1
- package/dist/screens/cassette-art.js +0 -72
- package/dist/screens/cassette-art.js.map +0 -1
- package/dist/store.js +0 -10
- package/dist/store.js.map +0 -1
|
@@ -1,163 +0,0 @@
|
|
|
1
|
-
import React, { useMemo, useState } from "react";
|
|
2
|
-
import { Box, Text, useApp as useInkApp, useInput, useStdout } from "ink";
|
|
3
|
-
import BigText from "ink-big-text";
|
|
4
|
-
import Gradient from "ink-gradient";
|
|
5
|
-
import { useApp } from "../store.js";
|
|
6
|
-
import { MUTED, CURRENT, HEADING, PALETTE, STRUCTURE } from "../colors.js";
|
|
7
|
-
import { VERSION } from "../version.js";
|
|
8
|
-
import { SMALL_CASSETTE_ROWS, SMALL_CASSETTE_WIDTH, } from "./cassette-art.js";
|
|
9
|
-
const ITEMS = [
|
|
10
|
-
{ action: "new", hotkey: "n", label: "New mixtape", hint: "open the curation wizard" },
|
|
11
|
-
{ action: "import", hotkey: "i", label: "Import archive", hint: "load a .mixtape file" },
|
|
12
|
-
{ action: "open", hotkey: "o", label: "Open existing", hint: "browse your mixtapes folder" },
|
|
13
|
-
{ action: "settings", hotkey: "s", label: "Settings", hint: "change AI agent" },
|
|
14
|
-
];
|
|
15
|
-
export function BootSplash() {
|
|
16
|
-
const app = useApp();
|
|
17
|
-
const ink = useInkApp();
|
|
18
|
-
const { stdout } = useStdout();
|
|
19
|
-
const cols = stdout?.columns ?? 80;
|
|
20
|
-
// Show the compact cassette whenever it fits; fall back to the wordmark
|
|
21
|
-
// on terminals too narrow for it.
|
|
22
|
-
const showCassette = cols >= SMALL_CASSETTE_WIDTH;
|
|
23
|
-
const [selected, setSelected] = useState(0);
|
|
24
|
-
function dispatch(action) {
|
|
25
|
-
switch (action) {
|
|
26
|
-
case "new":
|
|
27
|
-
app.navigate({ kind: "newProject" });
|
|
28
|
-
return;
|
|
29
|
-
case "import":
|
|
30
|
-
app.navigate({ kind: "import" });
|
|
31
|
-
return;
|
|
32
|
-
case "open":
|
|
33
|
-
app.navigate({ kind: "browser" });
|
|
34
|
-
return;
|
|
35
|
-
case "settings":
|
|
36
|
-
app.navigate({ kind: "agentSetup" });
|
|
37
|
-
return;
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
useInput((input, key) => {
|
|
41
|
-
if (key.upArrow || input === "k") {
|
|
42
|
-
setSelected((i) => (i - 1 + ITEMS.length) % ITEMS.length);
|
|
43
|
-
}
|
|
44
|
-
else if (key.downArrow || input === "j") {
|
|
45
|
-
setSelected((i) => (i + 1) % ITEMS.length);
|
|
46
|
-
}
|
|
47
|
-
else if (input === "n") {
|
|
48
|
-
dispatch("new");
|
|
49
|
-
}
|
|
50
|
-
else if (input === "i") {
|
|
51
|
-
dispatch("import");
|
|
52
|
-
}
|
|
53
|
-
else if (input === "o") {
|
|
54
|
-
dispatch("open");
|
|
55
|
-
}
|
|
56
|
-
else if (input === "s") {
|
|
57
|
-
dispatch("settings");
|
|
58
|
-
}
|
|
59
|
-
else if (key.return || input === " ") {
|
|
60
|
-
dispatch(ITEMS[selected].action);
|
|
61
|
-
}
|
|
62
|
-
else if (input === "q") {
|
|
63
|
-
ink.exit();
|
|
64
|
-
}
|
|
65
|
-
// No esc handler: the splash is home. Esc anywhere else walks back to
|
|
66
|
-
// here and stops — esc on home itself is a deliberate no-op.
|
|
67
|
-
});
|
|
68
|
-
return (React.createElement(Box, { flexDirection: "column", paddingY: 1 },
|
|
69
|
-
showCassette ? (React.createElement(CassetteLogo, { rows: SMALL_CASSETTE_ROWS })) : (React.createElement(Gradient, { name: "vice" },
|
|
70
|
-
React.createElement(BigText, { text: "liner", font: "block" }))),
|
|
71
|
-
React.createElement(Box, { flexDirection: "column", paddingLeft: 2, marginTop: showCassette ? 1 : -1 },
|
|
72
|
-
React.createElement(Box, null,
|
|
73
|
-
React.createElement(Text, { color: STRUCTURE, bold: true }, "liner"),
|
|
74
|
-
React.createElement(Text, { color: MUTED }, " \u00B7 curate AI-ready mixtapes from any set of sources")),
|
|
75
|
-
React.createElement(Text, { color: MUTED },
|
|
76
|
-
"v",
|
|
77
|
-
VERSION)),
|
|
78
|
-
React.createElement(Box, { flexDirection: "column", paddingLeft: 2, marginTop: 1 },
|
|
79
|
-
React.createElement(Text, { color: HEADING, bold: true }, "Get started"),
|
|
80
|
-
React.createElement(Box, { marginTop: 1, flexDirection: "column" }, ITEMS.map((item, i) => (React.createElement(MenuRow, { key: item.action, item: item, active: i === selected }))))),
|
|
81
|
-
React.createElement(Box, { marginTop: 1, paddingLeft: 2 },
|
|
82
|
-
React.createElement(Text, { color: MUTED }, "\u2191\u2193 navigate \u00B7 "),
|
|
83
|
-
React.createElement(Text, { color: STRUCTURE }, "enter"),
|
|
84
|
-
React.createElement(Text, { color: MUTED }, " select \u00B7 "),
|
|
85
|
-
React.createElement(Text, { color: STRUCTURE }, "[n]"),
|
|
86
|
-
React.createElement(Text, { color: MUTED }, " "),
|
|
87
|
-
React.createElement(Text, { color: STRUCTURE }, "[i]"),
|
|
88
|
-
React.createElement(Text, { color: MUTED }, " "),
|
|
89
|
-
React.createElement(Text, { color: STRUCTURE }, "[o]"),
|
|
90
|
-
React.createElement(Text, { color: MUTED }, " "),
|
|
91
|
-
React.createElement(Text, { color: STRUCTURE }, "[s]"),
|
|
92
|
-
React.createElement(Text, { color: MUTED }, " direct shortcuts \u00B7 "),
|
|
93
|
-
React.createElement(Text, { color: STRUCTURE }, "q"),
|
|
94
|
-
React.createElement(Text, { color: MUTED }, " quit"))));
|
|
95
|
-
}
|
|
96
|
-
/**
|
|
97
|
-
* Render the ASCII cassette logo with every non-space character painted in
|
|
98
|
-
* a randomly-chosen palette color. The randomization is computed once per
|
|
99
|
-
* mount (via useMemo) — re-randomizing on every re-render would flicker.
|
|
100
|
-
*
|
|
101
|
-
* For perf we group consecutive characters that landed on the same color
|
|
102
|
-
* into runs so each row ships a handful of `Text` nodes instead of one per
|
|
103
|
-
* character — Ink mounts a separate element per `<Text>`, and 66 elements
|
|
104
|
-
* × 19 rows × every re-paint adds up.
|
|
105
|
-
*
|
|
106
|
-
* Spaces are emitted as their own color-less run so we don't burn nodes
|
|
107
|
-
* coloring invisible cells.
|
|
108
|
-
*/
|
|
109
|
-
function CassetteLogo({ rows }) {
|
|
110
|
-
const colored = useMemo(() => rows.map(colorizeRow), [rows]);
|
|
111
|
-
return (React.createElement(Box, { flexDirection: "column" }, colored.map((runs, rowIdx) => (React.createElement(Box, { key: rowIdx }, runs.map((run, runIdx) => (React.createElement(Text, { key: runIdx, color: run.color }, run.chars))))))));
|
|
112
|
-
}
|
|
113
|
-
// Logo coloring mode:
|
|
114
|
-
// "solid" — every glyph in the brand orange (STRUCTURE). Current default.
|
|
115
|
-
// "random" — each glyph gets a random palette color (the original look).
|
|
116
|
-
// Flip this to "random" to bring back the multicolor cassette.
|
|
117
|
-
const LOGO_COLOR_MODE = "solid";
|
|
118
|
-
function glyphColor() {
|
|
119
|
-
return LOGO_COLOR_MODE === "solid"
|
|
120
|
-
? STRUCTURE
|
|
121
|
-
: PALETTE[Math.floor(Math.random() * PALETTE.length)];
|
|
122
|
-
}
|
|
123
|
-
function colorizeRow(row) {
|
|
124
|
-
const runs = [];
|
|
125
|
-
for (const ch of row) {
|
|
126
|
-
// Spaces don't need coloring — collapse them into uncolored runs so we
|
|
127
|
-
// don't allocate a color per blank cell.
|
|
128
|
-
const color = ch === " " ? undefined : glyphColor();
|
|
129
|
-
const tail = runs[runs.length - 1];
|
|
130
|
-
if (tail && tail.color === color) {
|
|
131
|
-
tail.chars += ch;
|
|
132
|
-
}
|
|
133
|
-
else {
|
|
134
|
-
runs.push({ color, chars: ch });
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
return runs;
|
|
138
|
-
}
|
|
139
|
-
function MenuRow({ item, active }) {
|
|
140
|
-
// ASCII ">" is guaranteed single-cell. The unicode ▶ glyph renders
|
|
141
|
-
// double-wide in many terminal fonts, which made the inactive rows shift
|
|
142
|
-
// every time the user moved the selection. Using a fixed two-char prefix
|
|
143
|
-
// ("> " or " ") keeps every row anchored at the same column.
|
|
144
|
-
return (React.createElement(Box, null,
|
|
145
|
-
React.createElement(Text, { color: active ? CURRENT : undefined, bold: active }, active ? "> " : " "),
|
|
146
|
-
React.createElement(Text, { color: STRUCTURE }, `[${item.hotkey}]`),
|
|
147
|
-
React.createElement(Text, null, " "),
|
|
148
|
-
React.createElement(Text, { color: active ? CURRENT : undefined, bold: active }, item.label.padEnd(18, " ")),
|
|
149
|
-
React.createElement(Text, { color: MUTED }, item.hint)));
|
|
150
|
-
}
|
|
151
|
-
export function shouldShowSplash() {
|
|
152
|
-
if (process.env["LINER_NO_SPLASH"])
|
|
153
|
-
return false;
|
|
154
|
-
if (!process.stdout.isTTY)
|
|
155
|
-
return false;
|
|
156
|
-
// Narrow terminals (< 60 cols) can't render the big-text wordmark well —
|
|
157
|
-
// skip rather than show a clipped logo.
|
|
158
|
-
const cols = process.stdout.columns ?? 80;
|
|
159
|
-
if (cols < 60)
|
|
160
|
-
return false;
|
|
161
|
-
return true;
|
|
162
|
-
}
|
|
163
|
-
//# sourceMappingURL=BootSplash.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"BootSplash.js","sourceRoot":"","sources":["../../src/screens/BootSplash.tsx"],"names":[],"mappings":"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"}
|