loadouts 0.2.5 → 0.3.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/bundled/embedded/opencode/loadouts-runtime.tsx +14461 -0
- package/bundled/embedded/pi/loadouts-runtime.ts +14638 -0
- package/bundled/extensions/loadouts-runtime/index.ts +14638 -0
- package/bundled/extensions/loadouts-runtime/package.json +6 -0
- package/bundled/loadouts/opencode-runtime.yaml +7 -0
- package/bundled/loadouts/pi-runtime.yaml +5 -0
- package/bundled/opencode/commands/loadouts.md +3 -0
- package/bundled/opencode/plugins/loadouts-runtime-tui.tsx +14461 -0
- package/bundled/opencode/plugins/loadouts-runtime.ts +533 -0
- package/bundled/opencode/tui.jsonc +5 -0
- package/dist/builtins/agent-transforms.d.ts.map +1 -1
- package/dist/builtins/agent-transforms.js +1 -0
- package/dist/builtins/agent-transforms.js.map +1 -1
- package/dist/builtins/index.d.ts.map +1 -1
- package/dist/builtins/index.js +6 -0
- package/dist/builtins/index.js.map +1 -1
- package/dist/builtins/kinds/extension-dir.d.ts +3 -0
- package/dist/builtins/kinds/extension-dir.d.ts.map +1 -0
- package/dist/builtins/kinds/extension-dir.js +8 -0
- package/dist/builtins/kinds/extension-dir.js.map +1 -0
- package/dist/builtins/kinds/opencode-command.d.ts +3 -0
- package/dist/builtins/kinds/opencode-command.d.ts.map +1 -0
- package/dist/builtins/kinds/opencode-command.js +8 -0
- package/dist/builtins/kinds/opencode-command.js.map +1 -0
- package/dist/builtins/kinds/opencode-plugin.js +1 -1
- package/dist/builtins/kinds/opencode-plugin.js.map +1 -1
- package/dist/builtins/kinds/opencode-tui-config.d.ts +3 -0
- package/dist/builtins/kinds/opencode-tui-config.d.ts.map +1 -0
- package/dist/builtins/kinds/opencode-tui-config.js +8 -0
- package/dist/builtins/kinds/opencode-tui-config.js.map +1 -0
- package/dist/builtins/tools/opencode.d.ts.map +1 -1
- package/dist/builtins/tools/opencode.js +9 -0
- package/dist/builtins/tools/opencode.js.map +1 -1
- package/dist/builtins/tools/pi.d.ts.map +1 -1
- package/dist/builtins/tools/pi.js +2 -1
- package/dist/builtins/tools/pi.js.map +1 -1
- package/dist/cli/commands/activate.d.ts.map +1 -1
- package/dist/cli/commands/activate.js +7 -0
- package/dist/cli/commands/activate.js.map +1 -1
- package/dist/cli/commands/diff.d.ts +10 -0
- package/dist/cli/commands/diff.d.ts.map +1 -1
- package/dist/cli/commands/diff.js +71 -30
- package/dist/cli/commands/diff.js.map +1 -1
- package/dist/cli/commands/info.d.ts +10 -0
- package/dist/cli/commands/info.d.ts.map +1 -1
- package/dist/cli/commands/info.js +45 -1
- package/dist/cli/commands/info.js.map +1 -1
- package/dist/cli/commands/list.d.ts +18 -0
- package/dist/cli/commands/list.d.ts.map +1 -1
- package/dist/cli/commands/list.js +27 -0
- package/dist/cli/commands/list.js.map +1 -1
- package/dist/cli/commands/status.d.ts +10 -0
- package/dist/cli/commands/status.d.ts.map +1 -1
- package/dist/cli/commands/status.js +100 -2
- package/dist/cli/commands/status.js.map +1 -1
- package/dist/cli/commands/sync.d.ts.map +1 -1
- package/dist/cli/commands/sync.js +6 -0
- package/dist/cli/commands/sync.js.map +1 -1
- package/dist/cli/commands/tui.d.ts +3 -0
- package/dist/cli/commands/tui.d.ts.map +1 -0
- package/dist/cli/commands/tui.js +20 -0
- package/dist/cli/commands/tui.js.map +1 -0
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +2 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/core/render.d.ts.map +1 -1
- package/dist/core/render.js +48 -7
- package/dist/core/render.js.map +1 -1
- package/dist/core/resolve.d.ts +1 -1
- package/dist/core/resolve.d.ts.map +1 -1
- package/dist/core/resolve.js +2 -2
- package/dist/core/resolve.js.map +1 -1
- package/dist/core/types.d.ts.map +1 -1
- package/dist/integrations/opencode-runtime/bridge.d.ts +17 -0
- package/dist/integrations/opencode-runtime/bridge.d.ts.map +1 -0
- package/dist/integrations/opencode-runtime/bridge.js +60 -0
- package/dist/integrations/opencode-runtime/bridge.js.map +1 -0
- package/dist/integrations/opencode-runtime/command.d.ts +4 -0
- package/dist/integrations/opencode-runtime/command.d.ts.map +1 -0
- package/dist/integrations/opencode-runtime/command.js +200 -0
- package/dist/integrations/opencode-runtime/command.js.map +1 -0
- package/dist/integrations/opencode-runtime/index.d.ts +6 -0
- package/dist/integrations/opencode-runtime/index.d.ts.map +1 -0
- package/dist/integrations/opencode-runtime/index.js +5 -0
- package/dist/integrations/opencode-runtime/index.js.map +1 -0
- package/dist/integrations/opencode-runtime/plugin.d.ts +59 -0
- package/dist/integrations/opencode-runtime/plugin.d.ts.map +1 -0
- package/dist/integrations/opencode-runtime/plugin.js +238 -0
- package/dist/integrations/opencode-runtime/plugin.js.map +1 -0
- package/dist/integrations/opencode-runtime/state.d.ts +8 -0
- package/dist/integrations/opencode-runtime/state.d.ts.map +1 -0
- package/dist/integrations/opencode-runtime/state.js +27 -0
- package/dist/integrations/opencode-runtime/state.js.map +1 -0
- package/dist/integrations/opencode-runtime/types.d.ts +38 -0
- package/dist/integrations/opencode-runtime/types.d.ts.map +1 -0
- package/dist/integrations/opencode-runtime/types.js +2 -0
- package/dist/integrations/opencode-runtime/types.js.map +1 -0
- package/dist/lib/gitignore.d.ts.map +1 -1
- package/dist/lib/gitignore.js +2 -0
- package/dist/lib/gitignore.js.map +1 -1
- package/dist/tui/core/actions.d.ts +9 -0
- package/dist/tui/core/actions.d.ts.map +1 -0
- package/dist/tui/core/actions.js +70 -0
- package/dist/tui/core/actions.js.map +1 -0
- package/dist/tui/core/data.d.ts +41 -0
- package/dist/tui/core/data.d.ts.map +1 -0
- package/dist/tui/core/data.js +150 -0
- package/dist/tui/core/data.js.map +1 -0
- package/dist/tui/core/host.d.ts +21 -0
- package/dist/tui/core/host.d.ts.map +1 -0
- package/dist/tui/core/host.js +2 -0
- package/dist/tui/core/host.js.map +1 -0
- package/dist/tui/core/intent.d.ts +80 -0
- package/dist/tui/core/intent.d.ts.map +1 -0
- package/dist/tui/core/intent.js +2 -0
- package/dist/tui/core/intent.js.map +1 -0
- package/dist/tui/core/keymap.d.ts +15 -0
- package/dist/tui/core/keymap.d.ts.map +1 -0
- package/dist/tui/core/keymap.js +36 -0
- package/dist/tui/core/keymap.js.map +1 -0
- package/dist/tui/core/model.d.ts +53 -0
- package/dist/tui/core/model.d.ts.map +1 -0
- package/dist/tui/core/model.js +33 -0
- package/dist/tui/core/model.js.map +1 -0
- package/dist/tui/core/theme.d.ts +15 -0
- package/dist/tui/core/theme.d.ts.map +1 -0
- package/dist/tui/core/theme.js +11 -0
- package/dist/tui/core/theme.js.map +1 -0
- package/dist/tui/core/update.d.ts +8 -0
- package/dist/tui/core/update.d.ts.map +1 -0
- package/dist/tui/core/update.js +192 -0
- package/dist/tui/core/update.js.map +1 -0
- package/dist/tui/core/view.d.ts +4 -0
- package/dist/tui/core/view.d.ts.map +1 -0
- package/dist/tui/core/view.js +150 -0
- package/dist/tui/core/view.js.map +1 -0
- package/dist/tui/core/viewspec.d.ts +44 -0
- package/dist/tui/core/viewspec.d.ts.map +1 -0
- package/dist/tui/core/viewspec.js +2 -0
- package/dist/tui/core/viewspec.js.map +1 -0
- package/dist/tui/hosts/_probe/embed-entry.d.ts +5 -0
- package/dist/tui/hosts/_probe/embed-entry.d.ts.map +1 -0
- package/dist/tui/hosts/_probe/embed-entry.js +8 -0
- package/dist/tui/hosts/_probe/embed-entry.js.map +1 -0
- package/dist/tui/hosts/pi/embed-entry.d.ts +3 -0
- package/dist/tui/hosts/pi/embed-entry.d.ts.map +1 -0
- package/dist/tui/hosts/pi/embed-entry.js +219 -0
- package/dist/tui/hosts/pi/embed-entry.js.map +1 -0
- package/dist/tui/hosts/pi/inject.d.ts +32 -0
- package/dist/tui/hosts/pi/inject.d.ts.map +1 -0
- package/dist/tui/hosts/pi/inject.js +53 -0
- package/dist/tui/hosts/pi/inject.js.map +1 -0
- package/dist/tui/hosts/standalone.d.ts +2 -0
- package/dist/tui/hosts/standalone.d.ts.map +1 -0
- package/dist/tui/hosts/standalone.js +145 -0
- package/dist/tui/hosts/standalone.js.map +1 -0
- package/dist/tui/skins/pi-tui/input.d.ts +5 -0
- package/dist/tui/skins/pi-tui/input.d.ts.map +1 -0
- package/dist/tui/skins/pi-tui/input.js +38 -0
- package/dist/tui/skins/pi-tui/input.js.map +1 -0
- package/dist/tui/skins/pi-tui/pi-theme-adapter.d.ts +4 -0
- package/dist/tui/skins/pi-tui/pi-theme-adapter.d.ts.map +1 -0
- package/dist/tui/skins/pi-tui/pi-theme-adapter.js +27 -0
- package/dist/tui/skins/pi-tui/pi-theme-adapter.js.map +1 -0
- package/dist/tui/skins/pi-tui/render.d.ts +35 -0
- package/dist/tui/skins/pi-tui/render.d.ts.map +1 -0
- package/dist/tui/skins/pi-tui/render.js +154 -0
- package/dist/tui/skins/pi-tui/render.js.map +1 -0
- package/dist/tui/skins/pi-tui/theme.d.ts +10 -0
- package/dist/tui/skins/pi-tui/theme.d.ts.map +1 -0
- package/dist/tui/skins/pi-tui/theme.js +58 -0
- package/dist/tui/skins/pi-tui/theme.js.map +1 -0
- package/docs/authoring.md +53 -1
- package/docs/commands.md +4 -0
- package/docs/compatibility.md +7 -7
- package/docs/concepts.md +4 -2
- package/docs/runtime.md +36 -1
- package/docs/troubleshooting.md +18 -1
- package/docs/tui-architecture.md +501 -0
- package/package.json +11 -2
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
import * as path from "node:path";
|
|
2
|
+
import * as os from "node:os";
|
|
3
|
+
import { listLoadouts, parseLoadoutDefinition, parseRootConfig } from "../../core/config.js";
|
|
4
|
+
import { collectCatalogRoots, collectRootsWithSources, } from "../../core/discovery.js";
|
|
5
|
+
import { loadState, detectDrift } from "../../core/manifest.js";
|
|
6
|
+
import { planRender } from "../../core/render.js";
|
|
7
|
+
import { resolveLoadout } from "../../core/resolve.js";
|
|
8
|
+
import { getArtifactName, sortArtifacts } from "../../lib/artifact-table.js";
|
|
9
|
+
import { fileExists } from "../../lib/fs.js";
|
|
10
|
+
const DRIFT_PRIORITY = {
|
|
11
|
+
ok: 0,
|
|
12
|
+
modified: 1,
|
|
13
|
+
unlinked: 2,
|
|
14
|
+
misdirected: 3,
|
|
15
|
+
missing: 4,
|
|
16
|
+
broken: 5,
|
|
17
|
+
};
|
|
18
|
+
export async function loadDashboardData(cwd = process.cwd()) {
|
|
19
|
+
const { entries, warnings } = await collectCatalogRoots(cwd);
|
|
20
|
+
const ownerStates = ownerStateMap(entries);
|
|
21
|
+
const seenByOwner = new Map();
|
|
22
|
+
const rows = [];
|
|
23
|
+
const issues = [];
|
|
24
|
+
for (const entry of entries) {
|
|
25
|
+
const seen = seenByOwner.get(entry.owner) ?? new Set();
|
|
26
|
+
seenByOwner.set(entry.owner, seen);
|
|
27
|
+
for (const name of listLoadouts(entry.root.path)) {
|
|
28
|
+
if (seen.has(name))
|
|
29
|
+
continue;
|
|
30
|
+
seen.add(name);
|
|
31
|
+
const ownerState = ownerStates.get(entry.owner);
|
|
32
|
+
const scope = ownerState?.scope ?? scopeFromRoot(entry.root);
|
|
33
|
+
const id = `${scope}:${name}`;
|
|
34
|
+
const filePath = loadoutDefinitionPath(entry.root.path, name);
|
|
35
|
+
try {
|
|
36
|
+
const definition = parseLoadoutDefinition(filePath);
|
|
37
|
+
const chain = collectRootsWithSources(entry.root, false, entry.owner !== "bundled").roots;
|
|
38
|
+
const rootConfig = parseRootConfig(entry.root.path);
|
|
39
|
+
const resolved = resolveLoadout(name, chain, rootConfig);
|
|
40
|
+
const slots = sortArtifacts(resolved.items.map((item) => ({
|
|
41
|
+
kind: item.kind,
|
|
42
|
+
name: getArtifactName(item.relativePath, item.kind),
|
|
43
|
+
relativePath: item.relativePath,
|
|
44
|
+
tools: item.tools,
|
|
45
|
+
})));
|
|
46
|
+
const tools = Array.from(new Set(slots.flatMap((slot) => slot.tools))).sort();
|
|
47
|
+
const active = ownerState?.active.has(name) ?? false;
|
|
48
|
+
const issue = active && ownerState
|
|
49
|
+
? await loadActiveIssue(ownerState, name, chain)
|
|
50
|
+
: undefined;
|
|
51
|
+
const status = issue ? "drift" : active ? "active" : "available";
|
|
52
|
+
const row = {
|
|
53
|
+
id,
|
|
54
|
+
name,
|
|
55
|
+
scope,
|
|
56
|
+
description: definition.description,
|
|
57
|
+
status,
|
|
58
|
+
activation: active ? "filesystem" : null,
|
|
59
|
+
counts: countSlots(slots),
|
|
60
|
+
tools,
|
|
61
|
+
issue,
|
|
62
|
+
filePath,
|
|
63
|
+
slots,
|
|
64
|
+
};
|
|
65
|
+
rows.push(row);
|
|
66
|
+
if (issue)
|
|
67
|
+
issues.push({ rowId: id, text: issue });
|
|
68
|
+
}
|
|
69
|
+
catch (err) {
|
|
70
|
+
const text = err instanceof Error ? err.message : String(err);
|
|
71
|
+
rows.push({
|
|
72
|
+
id,
|
|
73
|
+
name,
|
|
74
|
+
scope,
|
|
75
|
+
status: "broken",
|
|
76
|
+
activation: null,
|
|
77
|
+
counts: { rules: 0, skills: 0, instructions: 0, extensions: 0 },
|
|
78
|
+
tools: [],
|
|
79
|
+
issue: text,
|
|
80
|
+
filePath,
|
|
81
|
+
slots: [],
|
|
82
|
+
});
|
|
83
|
+
issues.push({ rowId: id, text });
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
return {
|
|
88
|
+
rows: sortRows(rows),
|
|
89
|
+
active: rows.filter((row) => row.activation).map((row) => row.name),
|
|
90
|
+
tools: Array.from(new Set(rows.flatMap((row) => row.tools))).sort(),
|
|
91
|
+
issues,
|
|
92
|
+
warnings,
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
function ownerStateMap(entries) {
|
|
96
|
+
const map = new Map();
|
|
97
|
+
for (const owner of ["project", "global"]) {
|
|
98
|
+
const primary = entries.find((entry) => entry.owner === owner && entry.root.level === owner);
|
|
99
|
+
if (!primary)
|
|
100
|
+
continue;
|
|
101
|
+
map.set(owner, {
|
|
102
|
+
active: new Set(loadState(primary.root.path)?.active ?? []),
|
|
103
|
+
configPath: primary.root.path,
|
|
104
|
+
projectRoot: owner === "project" ? path.dirname(primary.root.path) : os.homedir(),
|
|
105
|
+
scope: owner,
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
return map;
|
|
109
|
+
}
|
|
110
|
+
async function loadActiveIssue(state, name, roots) {
|
|
111
|
+
const applied = loadState(state.configPath);
|
|
112
|
+
if (!applied)
|
|
113
|
+
return "active state missing";
|
|
114
|
+
const loadout = resolveLoadout(name, roots, parseRootConfig(state.configPath));
|
|
115
|
+
const plan = await planRender(loadout, state.projectRoot, state.scope, state.configPath);
|
|
116
|
+
if (plan.errors.length > 0)
|
|
117
|
+
return plan.errors[0];
|
|
118
|
+
if (plan.shadowed.length > 0)
|
|
119
|
+
return `${plan.shadowed.length} shadowed output(s)`;
|
|
120
|
+
const targets = new Set(plan.outputs.map((output) => output.spec.targetPath));
|
|
121
|
+
const sourcePaths = new Set(plan.outputs.map((output) => output.spec.sourcePath));
|
|
122
|
+
const added = plan.outputs.some((output) => !applied.entries.some((entry) => entry.targetPath === output.spec.targetPath));
|
|
123
|
+
const removed = applied.entries.some((entry) => !targets.has(entry.targetPath));
|
|
124
|
+
if (added || removed)
|
|
125
|
+
return "configuration drift";
|
|
126
|
+
const worst = detectDrift(applied, state.projectRoot)
|
|
127
|
+
.filter((result) => sourcePaths.has(result.entry.sourcePath))
|
|
128
|
+
.sort((a, b) => DRIFT_PRIORITY[b.status] - DRIFT_PRIORITY[a.status])[0];
|
|
129
|
+
return worst && worst.status !== "ok" ? `output ${worst.status}` : undefined;
|
|
130
|
+
}
|
|
131
|
+
function countSlots(slots) {
|
|
132
|
+
return {
|
|
133
|
+
rules: slots.filter((slot) => slot.kind === "rule").length,
|
|
134
|
+
skills: slots.filter((slot) => slot.kind === "skill").length,
|
|
135
|
+
instructions: slots.filter((slot) => slot.kind === "instruction").length,
|
|
136
|
+
extensions: slots.filter((slot) => slot.kind === "extension" || slot.kind === "extension-dir").length,
|
|
137
|
+
};
|
|
138
|
+
}
|
|
139
|
+
function loadoutDefinitionPath(root, name) {
|
|
140
|
+
const yamlPath = path.join(root, "loadouts", `${name}.yaml`);
|
|
141
|
+
return fileExists(yamlPath) ? yamlPath : path.join(root, "loadouts", `${name}.yml`);
|
|
142
|
+
}
|
|
143
|
+
function scopeFromRoot(root) {
|
|
144
|
+
return root.level === "global" ? "global" : "project";
|
|
145
|
+
}
|
|
146
|
+
function sortRows(rows) {
|
|
147
|
+
const order = { active: 0, drift: 1, available: 2, broken: 3 };
|
|
148
|
+
return [...rows].sort((a, b) => order[a.status] - order[b.status] || a.name.localeCompare(b.name));
|
|
149
|
+
}
|
|
150
|
+
//# sourceMappingURL=data.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"data.js","sourceRoot":"","sources":["../../../src/tui/core/data.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { DashboardData } from "./data.js";
|
|
2
|
+
import type { ThemeTokens } from "./theme.js";
|
|
3
|
+
export interface HostContext {
|
|
4
|
+
theme(): ThemeTokens;
|
|
5
|
+
requestRender(): void;
|
|
6
|
+
exit(): void;
|
|
7
|
+
openEditor(path: string): Promise<void>;
|
|
8
|
+
data: DashboardData;
|
|
9
|
+
runtime?: RuntimeInjector;
|
|
10
|
+
}
|
|
11
|
+
export interface RuntimeStatus {
|
|
12
|
+
active: string[];
|
|
13
|
+
scope: "local" | "global";
|
|
14
|
+
updatedAt?: string;
|
|
15
|
+
}
|
|
16
|
+
export interface RuntimeInjector {
|
|
17
|
+
activate(names: string[], scope: "local" | "global"): Promise<void>;
|
|
18
|
+
deactivate(): Promise<void>;
|
|
19
|
+
status(): RuntimeStatus;
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=host.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"host.d.ts","sourceRoot":"","sources":["../../../src/tui/core/host.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C,MAAM,WAAW,WAAW;IAC1B,KAAK,IAAI,WAAW,CAAC;IACrB,aAAa,IAAI,IAAI,CAAC;IACtB,IAAI,IAAI,IAAI,CAAC;IACb,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACxC,IAAI,EAAE,aAAa,CAAC;IACpB,OAAO,CAAC,EAAE,eAAe,CAAC;CAC3B;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,KAAK,EAAE,OAAO,GAAG,QAAQ,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACpE,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5B,MAAM,IAAI,aAAa,CAAC;CACzB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"host.js","sourceRoot":"","sources":["../../../src/tui/core/host.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import type { ActivationMode, ScopeFilter } from "./model.js";
|
|
2
|
+
export type Intent = {
|
|
3
|
+
t: "move";
|
|
4
|
+
delta: number;
|
|
5
|
+
} | {
|
|
6
|
+
t: "section";
|
|
7
|
+
dir: 1 | -1;
|
|
8
|
+
} | {
|
|
9
|
+
t: "toggle";
|
|
10
|
+
} | {
|
|
11
|
+
t: "activate";
|
|
12
|
+
} | {
|
|
13
|
+
t: "deactivate";
|
|
14
|
+
} | {
|
|
15
|
+
t: "sync";
|
|
16
|
+
} | {
|
|
17
|
+
t: "clear";
|
|
18
|
+
} | {
|
|
19
|
+
t: "diffPreview";
|
|
20
|
+
} | {
|
|
21
|
+
t: "edit";
|
|
22
|
+
} | {
|
|
23
|
+
t: "enter";
|
|
24
|
+
} | {
|
|
25
|
+
t: "filterStart";
|
|
26
|
+
} | {
|
|
27
|
+
t: "filterInput";
|
|
28
|
+
text: string;
|
|
29
|
+
} | {
|
|
30
|
+
t: "filterChar";
|
|
31
|
+
char: string;
|
|
32
|
+
} | {
|
|
33
|
+
t: "filterBackspace";
|
|
34
|
+
} | {
|
|
35
|
+
t: "filterCommit";
|
|
36
|
+
} | {
|
|
37
|
+
t: "filterCancel";
|
|
38
|
+
} | {
|
|
39
|
+
t: "cycleScope";
|
|
40
|
+
} | {
|
|
41
|
+
t: "cycleTool";
|
|
42
|
+
} | {
|
|
43
|
+
t: "cycleMode";
|
|
44
|
+
} | {
|
|
45
|
+
t: "undo";
|
|
46
|
+
} | {
|
|
47
|
+
t: "refresh";
|
|
48
|
+
} | {
|
|
49
|
+
t: "openHelp";
|
|
50
|
+
} | {
|
|
51
|
+
t: "closeOverlay";
|
|
52
|
+
} | {
|
|
53
|
+
t: "quit";
|
|
54
|
+
} | {
|
|
55
|
+
t: "effectDone";
|
|
56
|
+
effect: Effect["t"];
|
|
57
|
+
ok: boolean;
|
|
58
|
+
message?: string;
|
|
59
|
+
data?: string[];
|
|
60
|
+
};
|
|
61
|
+
export type Effect = {
|
|
62
|
+
t: "apply";
|
|
63
|
+
targetSet: string[];
|
|
64
|
+
mode: ActivationMode;
|
|
65
|
+
scope: ScopeFilter;
|
|
66
|
+
} | {
|
|
67
|
+
t: "clear";
|
|
68
|
+
mode: ActivationMode;
|
|
69
|
+
scope: ScopeFilter;
|
|
70
|
+
} | {
|
|
71
|
+
t: "plan";
|
|
72
|
+
targetSet: string[];
|
|
73
|
+
scope: ScopeFilter;
|
|
74
|
+
} | {
|
|
75
|
+
t: "reload";
|
|
76
|
+
} | {
|
|
77
|
+
t: "editFile";
|
|
78
|
+
path: string;
|
|
79
|
+
};
|
|
80
|
+
//# sourceMappingURL=intent.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"intent.d.ts","sourceRoot":"","sources":["../../../src/tui/core/intent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9D,MAAM,MAAM,MAAM,GACd;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAC5B;IAAE,CAAC,EAAE,SAAS,CAAC;IAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAA;CAAE,GAC7B;IAAE,CAAC,EAAE,QAAQ,CAAA;CAAE,GACf;IAAE,CAAC,EAAE,UAAU,CAAA;CAAE,GACjB;IAAE,CAAC,EAAE,YAAY,CAAA;CAAE,GACnB;IAAE,CAAC,EAAE,MAAM,CAAA;CAAE,GACb;IAAE,CAAC,EAAE,OAAO,CAAA;CAAE,GACd;IAAE,CAAC,EAAE,aAAa,CAAA;CAAE,GACpB;IAAE,CAAC,EAAE,MAAM,CAAA;CAAE,GACb;IAAE,CAAC,EAAE,OAAO,CAAA;CAAE,GACd;IAAE,CAAC,EAAE,aAAa,CAAA;CAAE,GACpB;IAAE,CAAC,EAAE,aAAa,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAClC;IAAE,CAAC,EAAE,YAAY,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACjC;IAAE,CAAC,EAAE,iBAAiB,CAAA;CAAE,GACxB;IAAE,CAAC,EAAE,cAAc,CAAA;CAAE,GACrB;IAAE,CAAC,EAAE,cAAc,CAAA;CAAE,GACrB;IAAE,CAAC,EAAE,YAAY,CAAA;CAAE,GACnB;IAAE,CAAC,EAAE,WAAW,CAAA;CAAE,GAClB;IAAE,CAAC,EAAE,WAAW,CAAA;CAAE,GAClB;IAAE,CAAC,EAAE,MAAM,CAAA;CAAE,GACb;IAAE,CAAC,EAAE,SAAS,CAAA;CAAE,GAChB;IAAE,CAAC,EAAE,UAAU,CAAA;CAAE,GACjB;IAAE,CAAC,EAAE,cAAc,CAAA;CAAE,GACrB;IAAE,CAAC,EAAE,MAAM,CAAA;CAAE,GACb;IACE,CAAC,EAAE,YAAY,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;IACpB,EAAE,EAAE,OAAO,CAAC;IACZ,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACjB,CAAC;AAEN,MAAM,MAAM,MAAM,GACd;IAAE,CAAC,EAAE,OAAO,CAAC;IAAC,SAAS,EAAE,MAAM,EAAE,CAAC;IAAC,IAAI,EAAE,cAAc,CAAC;IAAC,KAAK,EAAE,WAAW,CAAA;CAAE,GAC7E;IAAE,CAAC,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,cAAc,CAAC;IAAC,KAAK,EAAE,WAAW,CAAA;CAAE,GACxD;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,EAAE,CAAC;IAAC,KAAK,EAAE,WAAW,CAAA;CAAE,GACtD;IAAE,CAAC,EAAE,QAAQ,CAAA;CAAE,GACf;IAAE,CAAC,EAAE,UAAU,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"intent.js","sourceRoot":"","sources":["../../../src/tui/core/intent.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { Intent } from "./intent.js";
|
|
2
|
+
export interface KeyBinding {
|
|
3
|
+
keys: string[];
|
|
4
|
+
label: string;
|
|
5
|
+
intent: Intent;
|
|
6
|
+
hint?: boolean;
|
|
7
|
+
mode?: "normal" | "filter";
|
|
8
|
+
}
|
|
9
|
+
export declare const keymap: KeyBinding[];
|
|
10
|
+
export declare function intentForKey(key: string): Intent | undefined;
|
|
11
|
+
export declare function footerKeyHints(): {
|
|
12
|
+
key: string;
|
|
13
|
+
label: string;
|
|
14
|
+
}[];
|
|
15
|
+
//# sourceMappingURL=keymap.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"keymap.d.ts","sourceRoot":"","sources":["../../../src/tui/core/keymap.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAE1C,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,IAAI,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAC;CAC5B;AAED,eAAO,MAAM,MAAM,EAAE,UAAU,EA0B9B,CAAC;AAEF,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAE5D;AAED,wBAAgB,cAAc,IAAI;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,EAAE,CAIjE"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
export const keymap = [
|
|
2
|
+
{ keys: ["j", "down"], label: "move down", intent: { t: "move", delta: 1 } },
|
|
3
|
+
{ keys: ["k", "up"], label: "move up", intent: { t: "move", delta: -1 } },
|
|
4
|
+
{ keys: ["tab"], label: "next section", intent: { t: "section", dir: 1 } },
|
|
5
|
+
{ keys: ["shift+tab"], label: "prev section", intent: { t: "section", dir: -1 } },
|
|
6
|
+
{ keys: ["space"], label: "toggle", intent: { t: "toggle" }, hint: true },
|
|
7
|
+
{ keys: ["a"], label: "activate", intent: { t: "activate" }, hint: true },
|
|
8
|
+
{ keys: ["d"], label: "deactivate", intent: { t: "deactivate" }, hint: true },
|
|
9
|
+
{ keys: ["s"], label: "sync", intent: { t: "sync" }, hint: true },
|
|
10
|
+
{ keys: ["x"], label: "clear", intent: { t: "clear" }, hint: true },
|
|
11
|
+
{ keys: ["enter"], label: "details", intent: { t: "enter" } },
|
|
12
|
+
{ keys: ["D"], label: "diff", intent: { t: "diffPreview" }, hint: true },
|
|
13
|
+
{ keys: ["e"], label: "edit", intent: { t: "edit" }, hint: true },
|
|
14
|
+
{ keys: ["m"], label: "mode", intent: { t: "cycleMode" } },
|
|
15
|
+
{ keys: ["g"], label: "scope", intent: { t: "cycleScope" } },
|
|
16
|
+
{ keys: ["t"], label: "tool", intent: { t: "cycleTool" } },
|
|
17
|
+
{ keys: ["/"], label: "find", intent: { t: "filterStart" }, hint: true },
|
|
18
|
+
{ keys: ["u"], label: "undo", intent: { t: "undo" }, hint: true },
|
|
19
|
+
{ keys: ["r"], label: "refresh", intent: { t: "refresh" } },
|
|
20
|
+
{ keys: ["?"], label: "help", intent: { t: "openHelp" }, hint: true },
|
|
21
|
+
{ keys: ["esc"], label: "close/cancel", intent: { t: "closeOverlay" } },
|
|
22
|
+
{ keys: ["q"], label: "quit", intent: { t: "quit" } },
|
|
23
|
+
{ keys: ["printable"], label: "filter text", intent: { t: "filterChar", char: "" }, mode: "filter" },
|
|
24
|
+
{ keys: ["backspace"], label: "delete filter char", intent: { t: "filterBackspace" }, mode: "filter" },
|
|
25
|
+
{ keys: ["enter"], label: "commit filter", intent: { t: "filterCommit" }, mode: "filter" },
|
|
26
|
+
{ keys: ["esc"], label: "cancel filter", intent: { t: "filterCancel" }, mode: "filter" },
|
|
27
|
+
];
|
|
28
|
+
export function intentForKey(key) {
|
|
29
|
+
return keymap.find((binding) => binding.mode !== "filter" && binding.keys.includes(key))?.intent;
|
|
30
|
+
}
|
|
31
|
+
export function footerKeyHints() {
|
|
32
|
+
return keymap
|
|
33
|
+
.filter((binding) => binding.mode !== "filter" && binding.hint)
|
|
34
|
+
.map((binding) => ({ key: binding.keys[0], label: binding.label }));
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=keymap.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"keymap.js","sourceRoot":"","sources":["../../../src/tui/core/keymap.ts"],"names":[],"mappings":"AAUA,MAAM,CAAC,MAAM,MAAM,GAAiB;IAClC,EAAE,IAAI,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;IAC5E,EAAE,IAAI,EAAE,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE;IACzE,EAAE,IAAI,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE;IAC1E,EAAE,IAAI,EAAE,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE;IACjF,EAAE,IAAI,EAAE,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE;IACzE,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,UAAU,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE;IACzE,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,YAAY,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE;IAC7E,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE;IACjE,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE;IACnE,EAAE,IAAI,EAAE,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE;IAC7D,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,aAAa,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE;IACxE,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE;IACjE,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,WAAW,EAAE,EAAE;IAC1D,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,YAAY,EAAE,EAAE;IAC5D,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,WAAW,EAAE,EAAE;IAC1D,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,aAAa,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE;IACxE,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE;IACjE,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,SAAS,EAAE,EAAE;IAC3D,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,UAAU,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE;IACrE,EAAE,IAAI,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,cAAc,EAAE,EAAE;IACvE,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE;IACrD,EAAE,IAAI,EAAE,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;IACpG,EAAE,IAAI,EAAE,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,oBAAoB,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,iBAAiB,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;IACtG,EAAE,IAAI,EAAE,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,eAAe,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,cAAc,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;IAC1F,EAAE,IAAI,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,eAAe,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,cAAc,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;CACzF,CAAC;AAEF,MAAM,UAAU,YAAY,CAAC,GAAW;IACtC,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,KAAK,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC;AACnG,CAAC;AAED,MAAM,UAAU,cAAc;IAC5B,OAAO,MAAM;SACV,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,KAAK,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;SAC9D,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AACxE,CAAC"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import type { DashboardData, LoadoutRow } from "./data.js";
|
|
2
|
+
export type Section = "active" | "available" | "issues";
|
|
3
|
+
export type ActivationMode = "filesystem" | "runtime";
|
|
4
|
+
export type ScopeFilter = "global" | "project";
|
|
5
|
+
export interface DetailModel {
|
|
6
|
+
rowId: string;
|
|
7
|
+
}
|
|
8
|
+
export interface UndoSnapshot {
|
|
9
|
+
rows: LoadoutRow[];
|
|
10
|
+
sections: Record<Section, string[]>;
|
|
11
|
+
cursor: {
|
|
12
|
+
section: Section;
|
|
13
|
+
index: number;
|
|
14
|
+
};
|
|
15
|
+
targetSet: string[];
|
|
16
|
+
scope: ScopeFilter;
|
|
17
|
+
}
|
|
18
|
+
export interface Model {
|
|
19
|
+
rows: LoadoutRow[];
|
|
20
|
+
sections: Record<Section, string[]>;
|
|
21
|
+
cursor: {
|
|
22
|
+
section: Section;
|
|
23
|
+
index: number;
|
|
24
|
+
};
|
|
25
|
+
filter: {
|
|
26
|
+
text: string;
|
|
27
|
+
scope?: ScopeFilter;
|
|
28
|
+
tool?: string;
|
|
29
|
+
};
|
|
30
|
+
filtering: boolean;
|
|
31
|
+
mode: ActivationMode;
|
|
32
|
+
scope: ScopeFilter;
|
|
33
|
+
staged?: Set<string>;
|
|
34
|
+
undo?: UndoSnapshot;
|
|
35
|
+
detail?: DetailModel;
|
|
36
|
+
overlay?: "help" | "diff" | "confirm" | null;
|
|
37
|
+
busy?: {
|
|
38
|
+
label: string;
|
|
39
|
+
} | null;
|
|
40
|
+
lastResult?: {
|
|
41
|
+
text: string;
|
|
42
|
+
variant: "info" | "success" | "error";
|
|
43
|
+
};
|
|
44
|
+
diffLines?: string[];
|
|
45
|
+
quitRequested?: boolean;
|
|
46
|
+
}
|
|
47
|
+
export declare function createInitialModel(data: DashboardData, options?: {
|
|
48
|
+
mode?: ActivationMode;
|
|
49
|
+
scope?: ScopeFilter;
|
|
50
|
+
}): Model;
|
|
51
|
+
export declare function buildSections(rows: LoadoutRow[]): Record<Section, string[]>;
|
|
52
|
+
export declare function firstCursor(sections: Record<Section, string[]>): Model["cursor"];
|
|
53
|
+
//# sourceMappingURL=model.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../../src/tui/core/model.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAE3D,MAAM,MAAM,OAAO,GAAG,QAAQ,GAAG,WAAW,GAAG,QAAQ,CAAC;AACxD,MAAM,MAAM,cAAc,GAAG,YAAY,GAAG,SAAS,CAAC;AACtD,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,SAAS,CAAC;AAE/C,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,UAAU,EAAE,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;IACpC,MAAM,EAAE;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAC5C,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,KAAK,EAAE,WAAW,CAAC;CACpB;AAED,MAAM,WAAW,KAAK;IACpB,IAAI,EAAE,UAAU,EAAE,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;IACpC,MAAM,EAAE;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAC5C,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,WAAW,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC7D,SAAS,EAAE,OAAO,CAAC;IACnB,IAAI,EAAE,cAAc,CAAC;IACrB,KAAK,EAAE,WAAW,CAAC;IACnB,MAAM,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACrB,IAAI,CAAC,EAAE,YAAY,CAAC;IACpB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC;IAC7C,IAAI,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAChC,UAAU,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAA;KAAE,CAAC;IACrE,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,aAAa,EACnB,OAAO,GAAE;IAAE,IAAI,CAAC,EAAE,cAAc,CAAC;IAAC,KAAK,CAAC,EAAE,WAAW,CAAA;CAAO,GAC3D,KAAK,CAiBP;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,UAAU,EAAE,GAAG,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC,CAM3E;AAED,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,CAKhF"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
export function createInitialModel(data, options = {}) {
|
|
2
|
+
const sections = buildSections(data.rows);
|
|
3
|
+
return {
|
|
4
|
+
rows: data.rows,
|
|
5
|
+
sections,
|
|
6
|
+
cursor: firstCursor(sections),
|
|
7
|
+
filter: { text: "" },
|
|
8
|
+
filtering: false,
|
|
9
|
+
mode: options.mode ?? "filesystem",
|
|
10
|
+
scope: options.scope ?? "project",
|
|
11
|
+
staged: new Set(),
|
|
12
|
+
overlay: null,
|
|
13
|
+
busy: null,
|
|
14
|
+
lastResult: data.issues.length
|
|
15
|
+
? { text: `${data.issues.length} issue(s) detected`, variant: "error" }
|
|
16
|
+
: undefined,
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
export function buildSections(rows) {
|
|
20
|
+
return {
|
|
21
|
+
active: rows.filter((r) => r.status === "active" || r.status === "drift").map((r) => r.id),
|
|
22
|
+
available: rows.filter((r) => r.status === "available").map((r) => r.id),
|
|
23
|
+
issues: rows.filter((r) => r.status === "broken").map((r) => r.id),
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
export function firstCursor(sections) {
|
|
27
|
+
for (const section of ["active", "available", "issues"]) {
|
|
28
|
+
if (sections[section].length > 0)
|
|
29
|
+
return { section, index: 0 };
|
|
30
|
+
}
|
|
31
|
+
return { section: "active", index: 0 };
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=model.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model.js","sourceRoot":"","sources":["../../../src/tui/core/model.ts"],"names":[],"mappings":"AAoCA,MAAM,UAAU,kBAAkB,CAChC,IAAmB,EACnB,UAA0D,EAAE;IAE5D,MAAM,QAAQ,GAAG,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1C,OAAO;QACL,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,QAAQ;QACR,MAAM,EAAE,WAAW,CAAC,QAAQ,CAAC;QAC7B,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE;QACpB,SAAS,EAAE,KAAK;QAChB,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,YAAY;QAClC,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,SAAS;QACjC,MAAM,EAAE,IAAI,GAAG,EAAE;QACjB,OAAO,EAAE,IAAI;QACb,IAAI,EAAE,IAAI;QACV,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM;YAC5B,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,oBAAoB,EAAE,OAAO,EAAE,OAAO,EAAE;YACvE,CAAC,CAAC,SAAS;KACd,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,IAAkB;IAC9C,OAAO;QACL,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,QAAQ,IAAI,CAAC,CAAC,MAAM,KAAK,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1F,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACxE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACnE,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,QAAmC;IAC7D,KAAK,MAAM,OAAO,IAAI,CAAC,QAAQ,EAAE,WAAW,EAAE,QAAQ,CAAU,EAAE,CAAC;QACjE,IAAI,QAAQ,CAAC,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;IACjE,CAAC;IACD,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;AACzC,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export type StyleToken = "text" | "muted" | "dim" | "accent" | "success" | "error" | "warning" | "border";
|
|
2
|
+
export interface ThemeTokens {
|
|
3
|
+
text: string;
|
|
4
|
+
muted: string;
|
|
5
|
+
dim: string;
|
|
6
|
+
accent: string;
|
|
7
|
+
success: string;
|
|
8
|
+
error: string;
|
|
9
|
+
warning: string;
|
|
10
|
+
border: string;
|
|
11
|
+
background?: string;
|
|
12
|
+
selectedBackground?: string;
|
|
13
|
+
}
|
|
14
|
+
export declare const defaultThemeTokens: ThemeTokens;
|
|
15
|
+
//# sourceMappingURL=theme.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"theme.d.ts","sourceRoot":"","sources":["../../../src/tui/core/theme.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,UAAU,GAClB,MAAM,GACN,OAAO,GACP,KAAK,GACL,QAAQ,GACR,SAAS,GACT,OAAO,GACP,SAAS,GACT,QAAQ,CAAC;AAEb,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,eAAO,MAAM,kBAAkB,EAAE,WAShC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"theme.js","sourceRoot":"","sources":["../../../src/tui/core/theme.ts"],"names":[],"mappings":"AAuBA,MAAM,CAAC,MAAM,kBAAkB,GAAgB;IAC7C,IAAI,EAAE,MAAM;IACZ,KAAK,EAAE,OAAO;IACd,GAAG,EAAE,KAAK;IACV,MAAM,EAAE,QAAQ;IAChB,OAAO,EAAE,SAAS;IAClB,KAAK,EAAE,OAAO;IACd,OAAO,EAAE,SAAS;IAClB,MAAM,EAAE,QAAQ;CACjB,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { type Model } from "./model.js";
|
|
2
|
+
import type { Effect, Intent } from "./intent.js";
|
|
3
|
+
export interface UpdateResult {
|
|
4
|
+
model: Model;
|
|
5
|
+
effect?: Effect;
|
|
6
|
+
}
|
|
7
|
+
export declare function update(model: Model, intent: Intent): UpdateResult;
|
|
8
|
+
//# sourceMappingURL=update.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../../src/tui/core/update.ts"],"names":[],"mappings":"AAAA,OAAO,EAA8B,KAAK,KAAK,EAAkC,MAAM,YAAY,CAAC;AACpG,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAGlD,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,KAAK,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAID,wBAAgB,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,GAAG,YAAY,CA0BjE"}
|