loadouts 0.3.0 → 0.4.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/pi/loadouts-runtime.ts +6543 -1504
- package/bundled/extensions/loadouts-runtime/index.ts +6543 -1504
- package/bundled/loadouts/opencode-runtime.yaml +2 -4
- package/bundled/opencode/plugins/loadouts/index.js +39198 -0
- package/bundled/opencode/plugins/loadouts/package.json +9 -0
- package/bundled/{embedded/opencode/loadouts-runtime.tsx → opencode/plugins/loadouts/tui.js} +4008 -1556
- package/dist/builtins/agent-transforms.d.ts.map +1 -1
- package/dist/builtins/agent-transforms.js +31 -10
- package/dist/builtins/agent-transforms.js.map +1 -1
- package/dist/builtins/index.d.ts.map +1 -1
- package/dist/builtins/index.js +14 -5
- package/dist/builtins/index.js.map +1 -1
- package/dist/builtins/kinds/opencode-cli-config.d.ts +3 -0
- package/dist/builtins/kinds/opencode-cli-config.d.ts.map +1 -0
- package/dist/builtins/kinds/opencode-cli-config.js +10 -0
- package/dist/builtins/kinds/opencode-cli-config.js.map +1 -0
- package/dist/builtins/kinds/opencode-plugin-dir.d.ts +3 -0
- package/dist/builtins/kinds/opencode-plugin-dir.d.ts.map +1 -0
- package/dist/builtins/kinds/opencode-plugin-dir.js +11 -0
- package/dist/builtins/kinds/opencode-plugin-dir.js.map +1 -0
- package/dist/builtins/tools/opencode.d.ts.map +1 -1
- package/dist/builtins/tools/opencode.js +10 -7
- package/dist/builtins/tools/opencode.js.map +1 -1
- package/dist/cli/commands/activate.d.ts.map +1 -1
- package/dist/cli/commands/activate.js +0 -7
- package/dist/cli/commands/activate.js.map +1 -1
- package/dist/cli/commands/session.d.ts +3 -0
- package/dist/cli/commands/session.d.ts.map +1 -0
- package/dist/cli/commands/session.js +68 -0
- package/dist/cli/commands/session.js.map +1 -0
- package/dist/cli/commands/status.js +1 -1
- 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 +5 -5
- package/dist/cli/commands/sync.js.map +1 -1
- 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/discovery.js +1 -1
- package/dist/core/discovery.js.map +1 -1
- package/dist/core/import-discovery.d.ts.map +1 -1
- package/dist/core/import-discovery.js +2 -0
- package/dist/core/import-discovery.js.map +1 -1
- package/dist/core/registry.d.ts +5 -0
- package/dist/core/registry.d.ts.map +1 -1
- package/dist/core/registry.js.map +1 -1
- package/dist/core/render.d.ts.map +1 -1
- package/dist/core/render.js +29 -1
- package/dist/core/render.js.map +1 -1
- package/dist/core/resolve.d.ts.map +1 -1
- package/dist/core/resolve.js +1 -0
- package/dist/core/resolve.js.map +1 -1
- package/dist/core/runtime.d.ts +4 -0
- package/dist/core/runtime.d.ts.map +1 -1
- package/dist/core/runtime.js +10 -3
- package/dist/core/runtime.js.map +1 -1
- package/dist/core/schema.d.ts +59 -0
- package/dist/core/schema.d.ts.map +1 -1
- package/dist/core/schema.js +5 -0
- package/dist/core/schema.js.map +1 -1
- package/dist/core/types.d.ts +13 -0
- package/dist/core/types.d.ts.map +1 -1
- package/dist/integrations/opencode/advertisement.d.ts +7 -0
- package/dist/integrations/opencode/advertisement.d.ts.map +1 -0
- package/dist/integrations/opencode/advertisement.js +17 -0
- package/dist/integrations/opencode/advertisement.js.map +1 -0
- package/dist/integrations/opencode/client.d.ts +12 -0
- package/dist/integrations/opencode/client.d.ts.map +1 -0
- package/dist/integrations/opencode/client.js +48 -0
- package/dist/integrations/opencode/client.js.map +1 -0
- package/dist/integrations/opencode/command.d.ts +11 -0
- package/dist/integrations/opencode/command.d.ts.map +1 -0
- package/dist/integrations/opencode/command.js +19 -0
- package/dist/integrations/opencode/command.js.map +1 -0
- package/dist/integrations/opencode/delta.d.ts +15 -0
- package/dist/integrations/opencode/delta.d.ts.map +1 -0
- package/dist/integrations/opencode/delta.js +75 -0
- package/dist/integrations/opencode/delta.js.map +1 -0
- package/dist/integrations/opencode/session.d.ts +207 -0
- package/dist/integrations/opencode/session.d.ts.map +1 -0
- package/dist/integrations/opencode/session.js +201 -0
- package/dist/integrations/opencode/session.js.map +1 -0
- package/dist/lib/gitignore.d.ts +7 -3
- package/dist/lib/gitignore.d.ts.map +1 -1
- package/dist/lib/gitignore.js +15 -7
- package/dist/lib/gitignore.js.map +1 -1
- package/dist/tui/core/actions.d.ts +3 -4
- package/dist/tui/core/actions.d.ts.map +1 -1
- package/dist/tui/core/actions.js +21 -15
- package/dist/tui/core/actions.js.map +1 -1
- package/dist/tui/core/controller.d.ts +28 -0
- package/dist/tui/core/controller.d.ts.map +1 -0
- package/dist/tui/core/controller.js +78 -0
- package/dist/tui/core/controller.js.map +1 -0
- package/dist/tui/core/data.d.ts +4 -2
- package/dist/tui/core/data.d.ts.map +1 -1
- package/dist/tui/core/data.js +14 -3
- package/dist/tui/core/data.js.map +1 -1
- package/dist/tui/core/host.d.ts +5 -11
- package/dist/tui/core/host.d.ts.map +1 -1
- package/dist/tui/core/intent.d.ts +18 -3
- package/dist/tui/core/intent.d.ts.map +1 -1
- package/dist/tui/core/keymap.d.ts +2 -1
- package/dist/tui/core/keymap.d.ts.map +1 -1
- package/dist/tui/core/keymap.js +38 -6
- package/dist/tui/core/keymap.js.map +1 -1
- package/dist/tui/core/model.d.ts +18 -6
- package/dist/tui/core/model.d.ts.map +1 -1
- package/dist/tui/core/model.js +4 -3
- package/dist/tui/core/model.js.map +1 -1
- package/dist/tui/core/selection.d.ts +12 -0
- package/dist/tui/core/selection.d.ts.map +1 -0
- package/dist/tui/core/selection.js +42 -0
- package/dist/tui/core/selection.js.map +1 -0
- package/dist/tui/core/update.d.ts.map +1 -1
- package/dist/tui/core/update.js +140 -126
- package/dist/tui/core/update.js.map +1 -1
- package/dist/tui/core/view.d.ts.map +1 -1
- package/dist/tui/core/view.js +43 -31
- package/dist/tui/core/view.js.map +1 -1
- package/dist/tui/core/viewport.d.ts +5 -0
- package/dist/tui/core/viewport.d.ts.map +1 -0
- package/dist/tui/core/viewport.js +33 -0
- package/dist/tui/core/viewport.js.map +1 -0
- package/dist/tui/core/viewspec.d.ts +5 -0
- package/dist/tui/core/viewspec.d.ts.map +1 -1
- package/dist/tui/hosts/pi/embed-entry.d.ts.map +1 -1
- package/dist/tui/hosts/pi/embed-entry.js +74 -197
- package/dist/tui/hosts/pi/embed-entry.js.map +1 -1
- package/dist/tui/hosts/pi/inject.d.ts +46 -29
- package/dist/tui/hosts/pi/inject.d.ts.map +1 -1
- package/dist/tui/hosts/pi/inject.js +25 -47
- package/dist/tui/hosts/pi/inject.js.map +1 -1
- package/dist/tui/hosts/standalone.d.ts.map +1 -1
- package/dist/tui/hosts/standalone.js +75 -111
- package/dist/tui/hosts/standalone.js.map +1 -1
- package/dist/tui/skins/pi-tui/input.js +4 -0
- package/dist/tui/skins/pi-tui/input.js.map +1 -1
- package/dist/tui/skins/pi-tui/render.d.ts +6 -3
- package/dist/tui/skins/pi-tui/render.d.ts.map +1 -1
- package/dist/tui/skins/pi-tui/render.js +32 -24
- package/dist/tui/skins/pi-tui/render.js.map +1 -1
- package/docs/archive/opencode-v2-runtime-beta-18707.md +813 -0
- package/docs/authoring.md +47 -44
- package/docs/commands.md +21 -1
- package/docs/compatibility.md +2 -2
- package/docs/concepts.md +2 -2
- package/docs/opencode-v2-probes.md +253 -0
- package/docs/opencode-v2-runtime.md +129 -0
- package/docs/registry.md +1366 -0
- package/docs/runtime.md +112 -82
- package/docs/troubleshooting.md +17 -15
- package/docs/tui-architecture.md +10 -8
- package/package.json +12 -7
- package/bundled/opencode/commands/loadouts.md +0 -3
- package/bundled/opencode/plugins/loadouts-runtime-tui.tsx +0 -14461
- package/bundled/opencode/plugins/loadouts-runtime.ts +0 -533
- package/bundled/opencode/tui.jsonc +0 -5
- package/dist/builtins/kinds/opencode-tui-config.d.ts +0 -3
- package/dist/builtins/kinds/opencode-tui-config.d.ts.map +0 -1
- package/dist/builtins/kinds/opencode-tui-config.js +0 -8
- package/dist/builtins/kinds/opencode-tui-config.js.map +0 -1
- package/dist/integrations/opencode-runtime/bridge.d.ts +0 -17
- package/dist/integrations/opencode-runtime/bridge.d.ts.map +0 -1
- package/dist/integrations/opencode-runtime/bridge.js +0 -60
- package/dist/integrations/opencode-runtime/bridge.js.map +0 -1
- package/dist/integrations/opencode-runtime/command.d.ts +0 -4
- package/dist/integrations/opencode-runtime/command.d.ts.map +0 -1
- package/dist/integrations/opencode-runtime/command.js +0 -200
- package/dist/integrations/opencode-runtime/command.js.map +0 -1
- package/dist/integrations/opencode-runtime/index.d.ts +0 -6
- package/dist/integrations/opencode-runtime/index.d.ts.map +0 -1
- package/dist/integrations/opencode-runtime/index.js +0 -5
- package/dist/integrations/opencode-runtime/index.js.map +0 -1
- package/dist/integrations/opencode-runtime/plugin.d.ts +0 -59
- package/dist/integrations/opencode-runtime/plugin.d.ts.map +0 -1
- package/dist/integrations/opencode-runtime/plugin.js +0 -238
- package/dist/integrations/opencode-runtime/plugin.js.map +0 -1
- package/dist/integrations/opencode-runtime/state.d.ts +0 -8
- package/dist/integrations/opencode-runtime/state.d.ts.map +0 -1
- package/dist/integrations/opencode-runtime/state.js +0 -27
- package/dist/integrations/opencode-runtime/state.js.map +0 -1
- package/dist/integrations/opencode-runtime/types.d.ts +0 -38
- package/dist/integrations/opencode-runtime/types.d.ts.map +0 -1
- package/dist/integrations/opencode-runtime/types.js +0 -2
- package/dist/integrations/opencode-runtime/types.js.map +0 -1
- package/dist/tui/hosts/_probe/embed-entry.d.ts +0 -5
- package/dist/tui/hosts/_probe/embed-entry.d.ts.map +0 -1
- package/dist/tui/hosts/_probe/embed-entry.js +0 -8
- package/dist/tui/hosts/_probe/embed-entry.js.map +0 -1
package/dist/tui/core/actions.js
CHANGED
|
@@ -2,31 +2,37 @@ import { clearState, loadState } from "../../core/manifest.js";
|
|
|
2
2
|
import { applyMultiPlan, planRender, removeManaged } from "../../core/render.js";
|
|
3
3
|
import { loadResolvedLoadouts } from "../../core/resolve.js";
|
|
4
4
|
import { parseRootConfig } from "../../core/config.js";
|
|
5
|
+
import { getContext } from "../../core/discovery.js";
|
|
6
|
+
import { compileSession } from "../../integrations/opencode/delta.js";
|
|
5
7
|
export async function executeEffect(effect, ctx) {
|
|
6
8
|
try {
|
|
7
9
|
if (effect.t === "reload")
|
|
8
10
|
return done(effect.t, true, "Reload requested");
|
|
9
11
|
if (effect.t === "editFile")
|
|
10
12
|
return done(effect.t, true, effect.path);
|
|
11
|
-
if (effect.
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
if (
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
await ctx.
|
|
20
|
-
|
|
13
|
+
if (effect.layer === "session") {
|
|
14
|
+
if (!ctx.session)
|
|
15
|
+
return done(effect.t, false, "Select a session first");
|
|
16
|
+
if (effect.t === "plan") {
|
|
17
|
+
const compiled = await compileSession(ctx.cwd, effect.targetSet, { scope: effect.scope });
|
|
18
|
+
return done(effect.t, true, "Session delta", [...compiled.bundle.components.map((item) => `+ ${item.kind} ${item.relativePath}`), ...compiled.warnings.map((warning) => `! ${warning}`)]);
|
|
19
|
+
}
|
|
20
|
+
const result = effect.t === "clear" || effect.targetSet.length === 0
|
|
21
|
+
? await ctx.session.activator.unequip(ctx.session.id)
|
|
22
|
+
: await ctx.session.activator.equip(ctx.session.id, effect.targetSet, { scope: effect.scope });
|
|
23
|
+
return done(effect.t, true, ["Session equipment updated", ...result.warnings].join("; "));
|
|
21
24
|
}
|
|
25
|
+
const fs = await getContext(effect.layer, ctx.cwd);
|
|
26
|
+
if (effect.t === "plan")
|
|
27
|
+
return done(effect.t, true, "Diff ready", await planLines(fs, effect.targetSet));
|
|
22
28
|
if (effect.t === "clear" || effect.targetSet.length === 0) {
|
|
23
|
-
const { removed } = await removeManaged(
|
|
24
|
-
clearState(
|
|
29
|
+
const { removed } = await removeManaged(fs.configPath, fs.projectRoot, fs.scope);
|
|
30
|
+
clearState(fs.configPath);
|
|
25
31
|
return done(effect.t, true, `${removed.length} output(s) removed`);
|
|
26
32
|
}
|
|
27
|
-
const plans = await resolvePlans(
|
|
28
|
-
const mode = parseRootConfig(
|
|
29
|
-
const result = await applyMultiPlan(plans,
|
|
33
|
+
const plans = await resolvePlans(fs, effect.targetSet);
|
|
34
|
+
const mode = parseRootConfig(fs.configPath).mode;
|
|
35
|
+
const result = await applyMultiPlan(plans, fs.configPath, fs.projectRoot, mode, fs.scope);
|
|
30
36
|
return done(effect.t, true, `${result.totalOutputs} output(s) applied`);
|
|
31
37
|
}
|
|
32
38
|
catch (err) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"actions.js","sourceRoot":"","sources":["../../../src/tui/core/actions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACjF,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"actions.js","sourceRoot":"","sources":["../../../src/tui/core/actions.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { type EquipMode, type Model } from "./model.js";
|
|
2
|
+
import type { Intent } from "./intent.js";
|
|
3
|
+
import type { HostContext } from "./host.js";
|
|
4
|
+
/** Shared lifecycle for all skins. Effects are serialized by the reducer's busy state. */
|
|
5
|
+
export declare class DashboardController {
|
|
6
|
+
private readonly options;
|
|
7
|
+
model: Model;
|
|
8
|
+
private disposed;
|
|
9
|
+
private refreshVersion;
|
|
10
|
+
constructor(options: {
|
|
11
|
+
cwd: string;
|
|
12
|
+
session?: HostContext["session"];
|
|
13
|
+
mode?: EquipMode;
|
|
14
|
+
changed: () => void;
|
|
15
|
+
exit: () => void;
|
|
16
|
+
edit: (file: string) => Promise<void>;
|
|
17
|
+
});
|
|
18
|
+
get spec(): import("./viewspec.js").ViewSpec;
|
|
19
|
+
get session(): {
|
|
20
|
+
id: string;
|
|
21
|
+
activator: import("../../integrations/opencode/session.js").SessionEquipment;
|
|
22
|
+
} | undefined;
|
|
23
|
+
dispose(): void;
|
|
24
|
+
selectSession(session: HostContext["session"]): Promise<void>;
|
|
25
|
+
refresh(): Promise<void>;
|
|
26
|
+
dispatch(intent: Intent): Promise<void>;
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=controller.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"controller.d.ts","sourceRoot":"","sources":["../../../src/tui/core/controller.ts"],"names":[],"mappings":"AAEA,OAAO,EAAqC,KAAK,SAAS,EAAE,KAAK,KAAK,EAAE,MAAM,YAAY,CAAC;AAI3F,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAE7C,0FAA0F;AAC1F,qBAAa,mBAAmB;IAKlB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAJpC,KAAK,EAAE,KAAK,CAAC;IACb,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,cAAc,CAAK;gBAEE,OAAO,EAAE;QACpC,GAAG,EAAE,MAAM,CAAC;QACZ,OAAO,CAAC,EAAE,WAAW,CAAC,SAAS,CAAC,CAAC;QACjC,IAAI,CAAC,EAAE,SAAS,CAAC;QACjB,OAAO,EAAE,MAAM,IAAI,CAAC;QACpB,IAAI,EAAE,MAAM,IAAI,CAAC;QACjB,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;KACvC;IAOD,IAAI,IAAI,qCAA+B;IACvC,IAAI,OAAO;;;kBAAmC;IAC9C,OAAO;IAED,aAAa,CAAC,OAAO,EAAE,WAAW,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAO7D,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAexB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAqB9C"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { executeEffect } from "./actions.js";
|
|
2
|
+
import { loadDashboardData, withSessionEquipment } from "./data.js";
|
|
3
|
+
import { buildSections, createInitialModel } from "./model.js";
|
|
4
|
+
import { cursorRow, normalizeCursor } from "./selection.js";
|
|
5
|
+
import { update } from "./update.js";
|
|
6
|
+
import { view } from "./view.js";
|
|
7
|
+
/** Shared lifecycle for all skins. Effects are serialized by the reducer's busy state. */
|
|
8
|
+
export class DashboardController {
|
|
9
|
+
options;
|
|
10
|
+
model;
|
|
11
|
+
disposed = false;
|
|
12
|
+
refreshVersion = 0;
|
|
13
|
+
constructor(options) {
|
|
14
|
+
this.options = options;
|
|
15
|
+
this.model = createInitialModel({ rows: [], active: [], tools: [], issues: [], warnings: [] }, {
|
|
16
|
+
mode: options.mode ?? (options.session ? "session" : "filesystem"),
|
|
17
|
+
sessionAvailable: Boolean(options.session),
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
get spec() { return view(this.model); }
|
|
21
|
+
get session() { return this.options.session; }
|
|
22
|
+
dispose() { this.disposed = true; this.refreshVersion++; }
|
|
23
|
+
async selectSession(session) {
|
|
24
|
+
if (this.model.busy)
|
|
25
|
+
return;
|
|
26
|
+
this.options.session = session;
|
|
27
|
+
this.model = { ...this.model, undo: undefined, mode: session ? "session" : "filesystem", sessionAvailable: Boolean(session) };
|
|
28
|
+
await this.refresh();
|
|
29
|
+
}
|
|
30
|
+
async refresh() {
|
|
31
|
+
const version = ++this.refreshVersion;
|
|
32
|
+
try {
|
|
33
|
+
const data = await loadDashboardData(this.options.cwd);
|
|
34
|
+
const session = this.options.session;
|
|
35
|
+
const status = session ? await session.activator.status(session.id) : undefined;
|
|
36
|
+
if (this.disposed || version !== this.refreshVersion || this.model.busy)
|
|
37
|
+
return;
|
|
38
|
+
const { rows } = withSessionEquipment(data, status);
|
|
39
|
+
this.model = normalizeCursor({ ...this.model, rows, sections: buildSections(rows), sessionScope: status?.scope ?? this.model.sessionScope }, cursorRow(this.model)?.id);
|
|
40
|
+
}
|
|
41
|
+
catch (error) {
|
|
42
|
+
this.model = { ...this.model, lastResult: { variant: "error", text: error instanceof Error ? error.message : String(error) } };
|
|
43
|
+
}
|
|
44
|
+
if (!this.disposed)
|
|
45
|
+
this.options.changed();
|
|
46
|
+
}
|
|
47
|
+
async dispatch(intent) {
|
|
48
|
+
if (this.disposed)
|
|
49
|
+
return;
|
|
50
|
+
const result = update(this.model, intent);
|
|
51
|
+
this.model = result.model;
|
|
52
|
+
if (this.model.quitRequested) {
|
|
53
|
+
this.options.exit();
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
this.options.changed();
|
|
57
|
+
if (!result.effect)
|
|
58
|
+
return;
|
|
59
|
+
const effect = result.effect;
|
|
60
|
+
let done;
|
|
61
|
+
try {
|
|
62
|
+
if (effect.t === "editFile")
|
|
63
|
+
await this.options.edit(effect.path);
|
|
64
|
+
done = await executeEffect(effect, { cwd: this.options.cwd, session: this.options.session });
|
|
65
|
+
}
|
|
66
|
+
catch (error) {
|
|
67
|
+
done = { t: "effectDone", effect: effect.t, ok: false, message: error instanceof Error ? error.message : String(error) };
|
|
68
|
+
}
|
|
69
|
+
if (this.disposed)
|
|
70
|
+
return;
|
|
71
|
+
this.model = update(this.model, done).model;
|
|
72
|
+
// Re-read persisted state after effects, including failures and external changes.
|
|
73
|
+
if (effect.t !== "plan")
|
|
74
|
+
await this.refresh();
|
|
75
|
+
this.options.changed();
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
//# sourceMappingURL=controller.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"controller.js","sourceRoot":"","sources":["../../../src/tui/core/controller.ts"],"names":[],"mappings":"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"}
|
package/dist/tui/core/data.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { Scope } from "../../core/types.js";
|
|
2
|
-
import type {
|
|
2
|
+
import type { EquipLayer } from "./model.js";
|
|
3
|
+
import type { SessionStatus } from "../../integrations/opencode/session.js";
|
|
3
4
|
export type LoadoutStatus = "active" | "available" | "drift" | "broken";
|
|
4
5
|
export interface ArtifactSlot {
|
|
5
6
|
kind: string;
|
|
@@ -19,7 +20,7 @@ export interface LoadoutRow {
|
|
|
19
20
|
scope: Scope;
|
|
20
21
|
description?: string;
|
|
21
22
|
status: LoadoutStatus;
|
|
22
|
-
|
|
23
|
+
equipped: EquipLayer[];
|
|
23
24
|
counts: LoadoutCounts;
|
|
24
25
|
tools: string[];
|
|
25
26
|
issue?: string;
|
|
@@ -38,4 +39,5 @@ export interface DashboardData {
|
|
|
38
39
|
warnings: string[];
|
|
39
40
|
}
|
|
40
41
|
export declare function loadDashboardData(cwd?: string): Promise<DashboardData>;
|
|
42
|
+
export declare function withSessionEquipment(data: DashboardData, status?: Pick<SessionStatus, "names" | "scope">): DashboardData;
|
|
41
43
|
//# sourceMappingURL=data.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data.d.ts","sourceRoot":"","sources":["../../../src/tui/core/data.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAe,KAAK,EAAQ,MAAM,qBAAqB,CAAC;AAGpE,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"data.d.ts","sourceRoot":"","sources":["../../../src/tui/core/data.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAe,KAAK,EAAQ,MAAM,qBAAqB,CAAC;AAGpE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wCAAwC,CAAC;AAE5E,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,WAAW,GAAG,OAAO,GAAG,QAAQ,CAAC;AAExE,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,KAAK,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,aAAa,CAAC;IACtB,QAAQ,EAAE,UAAU,EAAE,CAAC;IACvB,MAAM,EAAE,aAAa,CAAC;IACtB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,YAAY,EAAE,CAAC;CACvB;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,UAAU,EAAE,CAAC;IACnB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,MAAM,EAAE,cAAc,EAAE,CAAC;IACzB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAaD,wBAAsB,iBAAiB,CAAC,GAAG,GAAE,MAAsB,GAAG,OAAO,CAAC,aAAa,CAAC,CA8E3F;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,aAAa,EAAE,MAAM,CAAC,EAAE,IAAI,CAAC,aAAa,EAAE,OAAO,GAAG,OAAO,CAAC,GAAG,aAAa,CASxH"}
|
package/dist/tui/core/data.js
CHANGED
|
@@ -55,7 +55,7 @@ export async function loadDashboardData(cwd = process.cwd()) {
|
|
|
55
55
|
scope,
|
|
56
56
|
description: definition.description,
|
|
57
57
|
status,
|
|
58
|
-
|
|
58
|
+
equipped: active ? [scope] : [],
|
|
59
59
|
counts: countSlots(slots),
|
|
60
60
|
tools,
|
|
61
61
|
issue,
|
|
@@ -73,7 +73,7 @@ export async function loadDashboardData(cwd = process.cwd()) {
|
|
|
73
73
|
name,
|
|
74
74
|
scope,
|
|
75
75
|
status: "broken",
|
|
76
|
-
|
|
76
|
+
equipped: [],
|
|
77
77
|
counts: { rules: 0, skills: 0, instructions: 0, extensions: 0 },
|
|
78
78
|
tools: [],
|
|
79
79
|
issue: text,
|
|
@@ -86,12 +86,23 @@ export async function loadDashboardData(cwd = process.cwd()) {
|
|
|
86
86
|
}
|
|
87
87
|
return {
|
|
88
88
|
rows: sortRows(rows),
|
|
89
|
-
active: rows.filter((row) => row.
|
|
89
|
+
active: rows.filter((row) => row.equipped.length).map((row) => row.name),
|
|
90
90
|
tools: Array.from(new Set(rows.flatMap((row) => row.tools))).sort(),
|
|
91
91
|
issues,
|
|
92
92
|
warnings,
|
|
93
93
|
};
|
|
94
94
|
}
|
|
95
|
+
export function withSessionEquipment(data, status) {
|
|
96
|
+
return {
|
|
97
|
+
...data,
|
|
98
|
+
rows: data.rows.map((row) => {
|
|
99
|
+
const equipped = row.equipped.filter((layer) => layer !== "session");
|
|
100
|
+
if (status?.scope === row.scope && status.names.includes(row.name))
|
|
101
|
+
equipped.push("session");
|
|
102
|
+
return { ...row, equipped, status: row.status === "broken" || row.status === "drift" ? row.status : equipped.length ? "active" : "available" };
|
|
103
|
+
}),
|
|
104
|
+
};
|
|
105
|
+
}
|
|
95
106
|
function ownerStateMap(entries) {
|
|
96
107
|
const map = new Map();
|
|
97
108
|
for (const owner of ["project", "global"]) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data.js","sourceRoot":"","sources":["../../../src/tui/core/data.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,EAAE,YAAY,EAAE,sBAAsB,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC7F,OAAO,EACL,mBAAmB,EACnB,uBAAuB,GAGxB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,SAAS,EAAE,WAAW,EAAoB,MAAM,wBAAwB,CAAC;AAClF,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEvD,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC7E,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"data.js","sourceRoot":"","sources":["../../../src/tui/core/data.ts"],"names":[],"mappings":"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"}
|
package/dist/tui/core/host.d.ts
CHANGED
|
@@ -1,21 +1,15 @@
|
|
|
1
1
|
import type { DashboardData } from "./data.js";
|
|
2
2
|
import type { ThemeTokens } from "./theme.js";
|
|
3
|
+
import type { SessionEquipment } from "../../integrations/opencode/session.js";
|
|
3
4
|
export interface HostContext {
|
|
4
5
|
theme(): ThemeTokens;
|
|
5
6
|
requestRender(): void;
|
|
6
7
|
exit(): void;
|
|
7
8
|
openEditor(path: string): Promise<void>;
|
|
8
9
|
data: DashboardData;
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
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;
|
|
10
|
+
session?: {
|
|
11
|
+
id: string;
|
|
12
|
+
activator: SessionEquipment;
|
|
13
|
+
};
|
|
20
14
|
}
|
|
21
15
|
//# sourceMappingURL=host.d.ts.map
|
|
@@ -1 +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;
|
|
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;AAC9C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wCAAwC,CAAC;AAE/E,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;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,gBAAgB,CAAA;KAAE,CAAC;CACvD"}
|
|
@@ -1,10 +1,21 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { EquipLayer, ScopeFilter, Section } from "./model.js";
|
|
2
2
|
export type Intent = {
|
|
3
3
|
t: "move";
|
|
4
4
|
delta: number;
|
|
5
5
|
} | {
|
|
6
6
|
t: "section";
|
|
7
7
|
dir: 1 | -1;
|
|
8
|
+
} | {
|
|
9
|
+
t: "selectSection";
|
|
10
|
+
section: Section;
|
|
11
|
+
} | {
|
|
12
|
+
t: "topPrefix";
|
|
13
|
+
} | {
|
|
14
|
+
t: "edge";
|
|
15
|
+
edge: "first" | "last";
|
|
16
|
+
} | {
|
|
17
|
+
t: "detailScroll";
|
|
18
|
+
delta: number;
|
|
8
19
|
} | {
|
|
9
20
|
t: "toggle";
|
|
10
21
|
} | {
|
|
@@ -37,10 +48,13 @@ export type Intent = {
|
|
|
37
48
|
t: "filterCancel";
|
|
38
49
|
} | {
|
|
39
50
|
t: "cycleScope";
|
|
51
|
+
dir: 1 | -1;
|
|
40
52
|
} | {
|
|
41
53
|
t: "cycleTool";
|
|
42
54
|
} | {
|
|
43
55
|
t: "cycleMode";
|
|
56
|
+
} | {
|
|
57
|
+
t: "selectSession";
|
|
44
58
|
} | {
|
|
45
59
|
t: "undo";
|
|
46
60
|
} | {
|
|
@@ -61,15 +75,16 @@ export type Intent = {
|
|
|
61
75
|
export type Effect = {
|
|
62
76
|
t: "apply";
|
|
63
77
|
targetSet: string[];
|
|
64
|
-
|
|
78
|
+
layer: EquipLayer;
|
|
65
79
|
scope: ScopeFilter;
|
|
66
80
|
} | {
|
|
67
81
|
t: "clear";
|
|
68
|
-
|
|
82
|
+
layer: EquipLayer;
|
|
69
83
|
scope: ScopeFilter;
|
|
70
84
|
} | {
|
|
71
85
|
t: "plan";
|
|
72
86
|
targetSet: string[];
|
|
87
|
+
layer: EquipLayer;
|
|
73
88
|
scope: ScopeFilter;
|
|
74
89
|
} | {
|
|
75
90
|
t: "reload";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"intent.d.ts","sourceRoot":"","sources":["../../../src/tui/core/intent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"intent.d.ts","sourceRoot":"","sources":["../../../src/tui/core/intent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAEnE,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,eAAe,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,GACxC;IAAE,CAAC,EAAE,WAAW,CAAA;CAAE,GAClB;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,OAAO,GAAG,MAAM,CAAA;CAAE,GACrC;IAAE,CAAC,EAAE,cAAc,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACpC;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,CAAC;IAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAA;CAAE,GAChC;IAAE,CAAC,EAAE,WAAW,CAAA;CAAE,GAClB;IAAE,CAAC,EAAE,WAAW,CAAA;CAAE,GAClB;IAAE,CAAC,EAAE,eAAe,CAAA;CAAE,GACtB;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,KAAK,EAAE,UAAU,CAAC;IAAC,KAAK,EAAE,WAAW,CAAA;CAAE,GAC1E;IAAE,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,UAAU,CAAC;IAAC,KAAK,EAAE,WAAW,CAAA;CAAE,GACrD;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,EAAE,CAAC;IAAC,KAAK,EAAE,UAAU,CAAC;IAAC,KAAK,EAAE,WAAW,CAAA;CAAE,GACzE;IAAE,CAAC,EAAE,QAAQ,CAAA;CAAE,GACf;IAAE,CAAC,EAAE,UAAU,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { Intent } from "./intent.js";
|
|
2
|
+
import type { Model } from "./model.js";
|
|
2
3
|
export interface KeyBinding {
|
|
3
4
|
keys: string[];
|
|
4
5
|
label: string;
|
|
@@ -8,7 +9,7 @@ export interface KeyBinding {
|
|
|
8
9
|
}
|
|
9
10
|
export declare const keymap: KeyBinding[];
|
|
10
11
|
export declare function intentForKey(key: string): Intent | undefined;
|
|
11
|
-
export declare function footerKeyHints(): {
|
|
12
|
+
export declare function footerKeyHints(model: Model): {
|
|
12
13
|
key: string;
|
|
13
14
|
label: string;
|
|
14
15
|
}[];
|
|
@@ -1 +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;
|
|
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;AAC1C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAGxC,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,EAoC9B,CAAC;AAEF,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAE5D;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,KAAK,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,EAAE,CAmB7E"}
|
package/dist/tui/core/keymap.js
CHANGED
|
@@ -1,8 +1,19 @@
|
|
|
1
|
+
import { cursorRow, rowLayer } from "./selection.js";
|
|
1
2
|
export const keymap = [
|
|
2
3
|
{ keys: ["j", "down"], label: "move down", intent: { t: "move", delta: 1 } },
|
|
3
4
|
{ 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 } },
|
|
5
|
+
{ keys: ["tab", "l", "right"], label: "next section", intent: { t: "section", dir: 1 } },
|
|
6
|
+
{ keys: ["shift+tab", "h", "left"], label: "prev section", intent: { t: "section", dir: -1 } },
|
|
7
|
+
{ keys: ["1"], label: "Active section", intent: { t: "selectSection", section: "active" } },
|
|
8
|
+
{ keys: ["2"], label: "Available section", intent: { t: "selectSection", section: "available" } },
|
|
9
|
+
{ keys: ["3"], label: "Issues section", intent: { t: "selectSection", section: "issues" } },
|
|
10
|
+
{ keys: ["["], label: "prev scope tab", intent: { t: "cycleScope", dir: -1 } },
|
|
11
|
+
{ keys: ["]"], label: "next scope tab", intent: { t: "cycleScope", dir: 1 } },
|
|
12
|
+
{ keys: ["g"], label: "first row (gg)", intent: { t: "topPrefix" } },
|
|
13
|
+
{ keys: ["home"], label: "first row", intent: { t: "edge", edge: "first" } },
|
|
14
|
+
{ keys: ["G", "end"], label: "last row", intent: { t: "edge", edge: "last" } },
|
|
15
|
+
{ keys: ["pageup"], label: "scroll details up", intent: { t: "detailScroll", delta: -5 } },
|
|
16
|
+
{ keys: ["pagedown"], label: "scroll details down", intent: { t: "detailScroll", delta: 5 } },
|
|
6
17
|
{ keys: ["space"], label: "toggle", intent: { t: "toggle" }, hint: true },
|
|
7
18
|
{ keys: ["a"], label: "activate", intent: { t: "activate" }, hint: true },
|
|
8
19
|
{ keys: ["d"], label: "deactivate", intent: { t: "deactivate" }, hint: true },
|
|
@@ -11,8 +22,8 @@ export const keymap = [
|
|
|
11
22
|
{ keys: ["enter"], label: "details", intent: { t: "enter" } },
|
|
12
23
|
{ keys: ["D"], label: "diff", intent: { t: "diffPreview" }, hint: true },
|
|
13
24
|
{ keys: ["e"], label: "edit", intent: { t: "edit" }, hint: true },
|
|
14
|
-
{ keys: ["m"], label: "
|
|
15
|
-
{ keys: ["
|
|
25
|
+
{ keys: ["m"], label: "filesystem/session", intent: { t: "cycleMode" }, hint: true },
|
|
26
|
+
{ keys: ["S"], label: "choose session", intent: { t: "selectSession" } },
|
|
16
27
|
{ keys: ["t"], label: "tool", intent: { t: "cycleTool" } },
|
|
17
28
|
{ keys: ["/"], label: "find", intent: { t: "filterStart" }, hint: true },
|
|
18
29
|
{ keys: ["u"], label: "undo", intent: { t: "undo" }, hint: true },
|
|
@@ -28,9 +39,30 @@ export const keymap = [
|
|
|
28
39
|
export function intentForKey(key) {
|
|
29
40
|
return keymap.find((binding) => binding.mode !== "filter" && binding.keys.includes(key))?.intent;
|
|
30
41
|
}
|
|
31
|
-
export function footerKeyHints() {
|
|
32
|
-
|
|
42
|
+
export function footerKeyHints(model) {
|
|
43
|
+
if (model.overlay === "confirm")
|
|
44
|
+
return [{ key: "h/l", label: "scope" }, { key: "enter", label: "confirm" }, { key: "esc", label: "cancel" }];
|
|
45
|
+
if (model.overlay)
|
|
46
|
+
return [{ key: "j/k", label: "scroll" }, { key: "esc", label: "close" }];
|
|
47
|
+
if (model.filtering)
|
|
48
|
+
return [{ key: "enter", label: "keep filter" }, { key: "esc", label: "clear filter" }];
|
|
49
|
+
const row = cursorRow(model);
|
|
50
|
+
const active = row && row.equipped.includes(rowLayer(model, row));
|
|
51
|
+
const keys = keymap
|
|
33
52
|
.filter((binding) => binding.mode !== "filter" && binding.hint)
|
|
53
|
+
.filter(({ intent }) => {
|
|
54
|
+
if (["activate", "deactivate", "toggle"].includes(intent.t)) {
|
|
55
|
+
return row && row.status !== "broken" && (intent.t === "toggle" || (intent.t === "deactivate" ? active : !active));
|
|
56
|
+
}
|
|
57
|
+
if (intent.t === "edit")
|
|
58
|
+
return Boolean(row?.filePath);
|
|
59
|
+
if (intent.t === "cycleMode")
|
|
60
|
+
return model.sessionAvailable;
|
|
61
|
+
if (intent.t === "undo")
|
|
62
|
+
return Boolean(model.undo);
|
|
63
|
+
return true;
|
|
64
|
+
})
|
|
34
65
|
.map((binding) => ({ key: binding.keys[0], label: binding.label }));
|
|
66
|
+
return [{ key: "h/l", label: "section" }, { key: "[/]", label: "scope" }, { key: "?", label: "help" }, ...keys.filter((key) => key.key !== "?")];
|
|
35
67
|
}
|
|
36
68
|
//# sourceMappingURL=keymap.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"keymap.js","sourceRoot":"","sources":["../../../src/tui/core/keymap.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"keymap.js","sourceRoot":"","sources":["../../../src/tui/core/keymap.ts"],"names":[],"mappings":"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"}
|
package/dist/tui/core/model.d.ts
CHANGED
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
import type { DashboardData, LoadoutRow } from "./data.js";
|
|
2
2
|
export type Section = "active" | "available" | "issues";
|
|
3
|
-
export type
|
|
3
|
+
export type EquipLayer = "global" | "project" | "session";
|
|
4
|
+
export type EquipMode = "filesystem" | "session";
|
|
4
5
|
export type ScopeFilter = "global" | "project";
|
|
6
|
+
export type BulkAction = "sync" | "clear" | "diffPreview";
|
|
5
7
|
export interface DetailModel {
|
|
6
8
|
rowId: string;
|
|
9
|
+
scroll?: number;
|
|
7
10
|
}
|
|
8
11
|
export interface UndoSnapshot {
|
|
9
12
|
rows: LoadoutRow[];
|
|
@@ -14,6 +17,7 @@ export interface UndoSnapshot {
|
|
|
14
17
|
};
|
|
15
18
|
targetSet: string[];
|
|
16
19
|
scope: ScopeFilter;
|
|
20
|
+
layer: EquipLayer;
|
|
17
21
|
}
|
|
18
22
|
export interface Model {
|
|
19
23
|
rows: LoadoutRow[];
|
|
@@ -28,12 +32,19 @@ export interface Model {
|
|
|
28
32
|
tool?: string;
|
|
29
33
|
};
|
|
30
34
|
filtering: boolean;
|
|
31
|
-
mode:
|
|
32
|
-
|
|
33
|
-
|
|
35
|
+
mode: EquipMode;
|
|
36
|
+
sessionAvailable: boolean;
|
|
37
|
+
sessionScope: ScopeFilter;
|
|
34
38
|
undo?: UndoSnapshot;
|
|
39
|
+
rollback?: UndoSnapshot;
|
|
35
40
|
detail?: DetailModel;
|
|
36
41
|
overlay?: "help" | "diff" | "confirm" | null;
|
|
42
|
+
overlayScroll: number;
|
|
43
|
+
confirm?: {
|
|
44
|
+
action: BulkAction;
|
|
45
|
+
scope: ScopeFilter;
|
|
46
|
+
};
|
|
47
|
+
pendingTop?: boolean;
|
|
37
48
|
busy?: {
|
|
38
49
|
label: string;
|
|
39
50
|
} | null;
|
|
@@ -45,8 +56,9 @@ export interface Model {
|
|
|
45
56
|
quitRequested?: boolean;
|
|
46
57
|
}
|
|
47
58
|
export declare function createInitialModel(data: DashboardData, options?: {
|
|
48
|
-
mode?:
|
|
49
|
-
|
|
59
|
+
mode?: EquipMode;
|
|
60
|
+
sessionAvailable?: boolean;
|
|
61
|
+
sessionScope?: ScopeFilter;
|
|
50
62
|
}): Model;
|
|
51
63
|
export declare function buildSections(rows: LoadoutRow[]): Record<Section, string[]>;
|
|
52
64
|
export declare function firstCursor(sections: Record<Section, string[]>): Model["cursor"];
|
|
@@ -1 +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,
|
|
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,UAAU,GAAG,QAAQ,GAAG,SAAS,GAAG,SAAS,CAAC;AAC1D,MAAM,MAAM,SAAS,GAAG,YAAY,GAAG,SAAS,CAAC;AACjD,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,SAAS,CAAC;AAC/C,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,OAAO,GAAG,aAAa,CAAC;AAE1D,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;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;IACnB,KAAK,EAAE,UAAU,CAAC;CACnB;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,SAAS,CAAC;IAChB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,YAAY,EAAE,WAAW,CAAC;IAC1B,IAAI,CAAC,EAAE,YAAY,CAAC;IACpB,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC;IAC7C,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE;QAAE,MAAM,EAAE,UAAU,CAAC;QAAC,KAAK,EAAE,WAAW,CAAA;KAAE,CAAC;IACrD,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,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,SAAS,CAAC;IAAC,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAAC,YAAY,CAAC,EAAE,WAAW,CAAA;CAAO,GACzF,KAAK,CAkBP;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"}
|
package/dist/tui/core/model.js
CHANGED
|
@@ -6,10 +6,11 @@ export function createInitialModel(data, options = {}) {
|
|
|
6
6
|
cursor: firstCursor(sections),
|
|
7
7
|
filter: { text: "" },
|
|
8
8
|
filtering: false,
|
|
9
|
-
mode: options.mode ?? "filesystem",
|
|
10
|
-
|
|
11
|
-
|
|
9
|
+
mode: options.sessionAvailable ? options.mode ?? "filesystem" : "filesystem",
|
|
10
|
+
sessionAvailable: options.sessionAvailable ?? false,
|
|
11
|
+
sessionScope: options.sessionScope ?? "project",
|
|
12
12
|
overlay: null,
|
|
13
|
+
overlayScroll: 0,
|
|
13
14
|
busy: null,
|
|
14
15
|
lastResult: data.issues.length
|
|
15
16
|
? { text: `${data.issues.length} issue(s) detected`, variant: "error" }
|