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.
Files changed (180) hide show
  1. package/bundled/embedded/opencode/loadouts-runtime.tsx +14461 -0
  2. package/bundled/embedded/pi/loadouts-runtime.ts +14638 -0
  3. package/bundled/extensions/loadouts-runtime/index.ts +14638 -0
  4. package/bundled/extensions/loadouts-runtime/package.json +6 -0
  5. package/bundled/loadouts/opencode-runtime.yaml +7 -0
  6. package/bundled/loadouts/pi-runtime.yaml +5 -0
  7. package/bundled/opencode/commands/loadouts.md +3 -0
  8. package/bundled/opencode/plugins/loadouts-runtime-tui.tsx +14461 -0
  9. package/bundled/opencode/plugins/loadouts-runtime.ts +533 -0
  10. package/bundled/opencode/tui.jsonc +5 -0
  11. package/dist/builtins/agent-transforms.d.ts.map +1 -1
  12. package/dist/builtins/agent-transforms.js +1 -0
  13. package/dist/builtins/agent-transforms.js.map +1 -1
  14. package/dist/builtins/index.d.ts.map +1 -1
  15. package/dist/builtins/index.js +6 -0
  16. package/dist/builtins/index.js.map +1 -1
  17. package/dist/builtins/kinds/extension-dir.d.ts +3 -0
  18. package/dist/builtins/kinds/extension-dir.d.ts.map +1 -0
  19. package/dist/builtins/kinds/extension-dir.js +8 -0
  20. package/dist/builtins/kinds/extension-dir.js.map +1 -0
  21. package/dist/builtins/kinds/opencode-command.d.ts +3 -0
  22. package/dist/builtins/kinds/opencode-command.d.ts.map +1 -0
  23. package/dist/builtins/kinds/opencode-command.js +8 -0
  24. package/dist/builtins/kinds/opencode-command.js.map +1 -0
  25. package/dist/builtins/kinds/opencode-plugin.js +1 -1
  26. package/dist/builtins/kinds/opencode-plugin.js.map +1 -1
  27. package/dist/builtins/kinds/opencode-tui-config.d.ts +3 -0
  28. package/dist/builtins/kinds/opencode-tui-config.d.ts.map +1 -0
  29. package/dist/builtins/kinds/opencode-tui-config.js +8 -0
  30. package/dist/builtins/kinds/opencode-tui-config.js.map +1 -0
  31. package/dist/builtins/tools/opencode.d.ts.map +1 -1
  32. package/dist/builtins/tools/opencode.js +9 -0
  33. package/dist/builtins/tools/opencode.js.map +1 -1
  34. package/dist/builtins/tools/pi.d.ts.map +1 -1
  35. package/dist/builtins/tools/pi.js +2 -1
  36. package/dist/builtins/tools/pi.js.map +1 -1
  37. package/dist/cli/commands/activate.d.ts.map +1 -1
  38. package/dist/cli/commands/activate.js +7 -0
  39. package/dist/cli/commands/activate.js.map +1 -1
  40. package/dist/cli/commands/diff.d.ts +10 -0
  41. package/dist/cli/commands/diff.d.ts.map +1 -1
  42. package/dist/cli/commands/diff.js +71 -30
  43. package/dist/cli/commands/diff.js.map +1 -1
  44. package/dist/cli/commands/info.d.ts +10 -0
  45. package/dist/cli/commands/info.d.ts.map +1 -1
  46. package/dist/cli/commands/info.js +45 -1
  47. package/dist/cli/commands/info.js.map +1 -1
  48. package/dist/cli/commands/list.d.ts +18 -0
  49. package/dist/cli/commands/list.d.ts.map +1 -1
  50. package/dist/cli/commands/list.js +27 -0
  51. package/dist/cli/commands/list.js.map +1 -1
  52. package/dist/cli/commands/status.d.ts +10 -0
  53. package/dist/cli/commands/status.d.ts.map +1 -1
  54. package/dist/cli/commands/status.js +100 -2
  55. package/dist/cli/commands/status.js.map +1 -1
  56. package/dist/cli/commands/sync.d.ts.map +1 -1
  57. package/dist/cli/commands/sync.js +6 -0
  58. package/dist/cli/commands/sync.js.map +1 -1
  59. package/dist/cli/commands/tui.d.ts +3 -0
  60. package/dist/cli/commands/tui.d.ts.map +1 -0
  61. package/dist/cli/commands/tui.js +20 -0
  62. package/dist/cli/commands/tui.js.map +1 -0
  63. package/dist/cli/index.d.ts.map +1 -1
  64. package/dist/cli/index.js +2 -0
  65. package/dist/cli/index.js.map +1 -1
  66. package/dist/core/render.d.ts.map +1 -1
  67. package/dist/core/render.js +48 -7
  68. package/dist/core/render.js.map +1 -1
  69. package/dist/core/resolve.d.ts +1 -1
  70. package/dist/core/resolve.d.ts.map +1 -1
  71. package/dist/core/resolve.js +2 -2
  72. package/dist/core/resolve.js.map +1 -1
  73. package/dist/core/types.d.ts.map +1 -1
  74. package/dist/integrations/opencode-runtime/bridge.d.ts +17 -0
  75. package/dist/integrations/opencode-runtime/bridge.d.ts.map +1 -0
  76. package/dist/integrations/opencode-runtime/bridge.js +60 -0
  77. package/dist/integrations/opencode-runtime/bridge.js.map +1 -0
  78. package/dist/integrations/opencode-runtime/command.d.ts +4 -0
  79. package/dist/integrations/opencode-runtime/command.d.ts.map +1 -0
  80. package/dist/integrations/opencode-runtime/command.js +200 -0
  81. package/dist/integrations/opencode-runtime/command.js.map +1 -0
  82. package/dist/integrations/opencode-runtime/index.d.ts +6 -0
  83. package/dist/integrations/opencode-runtime/index.d.ts.map +1 -0
  84. package/dist/integrations/opencode-runtime/index.js +5 -0
  85. package/dist/integrations/opencode-runtime/index.js.map +1 -0
  86. package/dist/integrations/opencode-runtime/plugin.d.ts +59 -0
  87. package/dist/integrations/opencode-runtime/plugin.d.ts.map +1 -0
  88. package/dist/integrations/opencode-runtime/plugin.js +238 -0
  89. package/dist/integrations/opencode-runtime/plugin.js.map +1 -0
  90. package/dist/integrations/opencode-runtime/state.d.ts +8 -0
  91. package/dist/integrations/opencode-runtime/state.d.ts.map +1 -0
  92. package/dist/integrations/opencode-runtime/state.js +27 -0
  93. package/dist/integrations/opencode-runtime/state.js.map +1 -0
  94. package/dist/integrations/opencode-runtime/types.d.ts +38 -0
  95. package/dist/integrations/opencode-runtime/types.d.ts.map +1 -0
  96. package/dist/integrations/opencode-runtime/types.js +2 -0
  97. package/dist/integrations/opencode-runtime/types.js.map +1 -0
  98. package/dist/lib/gitignore.d.ts.map +1 -1
  99. package/dist/lib/gitignore.js +2 -0
  100. package/dist/lib/gitignore.js.map +1 -1
  101. package/dist/tui/core/actions.d.ts +9 -0
  102. package/dist/tui/core/actions.d.ts.map +1 -0
  103. package/dist/tui/core/actions.js +70 -0
  104. package/dist/tui/core/actions.js.map +1 -0
  105. package/dist/tui/core/data.d.ts +41 -0
  106. package/dist/tui/core/data.d.ts.map +1 -0
  107. package/dist/tui/core/data.js +150 -0
  108. package/dist/tui/core/data.js.map +1 -0
  109. package/dist/tui/core/host.d.ts +21 -0
  110. package/dist/tui/core/host.d.ts.map +1 -0
  111. package/dist/tui/core/host.js +2 -0
  112. package/dist/tui/core/host.js.map +1 -0
  113. package/dist/tui/core/intent.d.ts +80 -0
  114. package/dist/tui/core/intent.d.ts.map +1 -0
  115. package/dist/tui/core/intent.js +2 -0
  116. package/dist/tui/core/intent.js.map +1 -0
  117. package/dist/tui/core/keymap.d.ts +15 -0
  118. package/dist/tui/core/keymap.d.ts.map +1 -0
  119. package/dist/tui/core/keymap.js +36 -0
  120. package/dist/tui/core/keymap.js.map +1 -0
  121. package/dist/tui/core/model.d.ts +53 -0
  122. package/dist/tui/core/model.d.ts.map +1 -0
  123. package/dist/tui/core/model.js +33 -0
  124. package/dist/tui/core/model.js.map +1 -0
  125. package/dist/tui/core/theme.d.ts +15 -0
  126. package/dist/tui/core/theme.d.ts.map +1 -0
  127. package/dist/tui/core/theme.js +11 -0
  128. package/dist/tui/core/theme.js.map +1 -0
  129. package/dist/tui/core/update.d.ts +8 -0
  130. package/dist/tui/core/update.d.ts.map +1 -0
  131. package/dist/tui/core/update.js +192 -0
  132. package/dist/tui/core/update.js.map +1 -0
  133. package/dist/tui/core/view.d.ts +4 -0
  134. package/dist/tui/core/view.d.ts.map +1 -0
  135. package/dist/tui/core/view.js +150 -0
  136. package/dist/tui/core/view.js.map +1 -0
  137. package/dist/tui/core/viewspec.d.ts +44 -0
  138. package/dist/tui/core/viewspec.d.ts.map +1 -0
  139. package/dist/tui/core/viewspec.js +2 -0
  140. package/dist/tui/core/viewspec.js.map +1 -0
  141. package/dist/tui/hosts/_probe/embed-entry.d.ts +5 -0
  142. package/dist/tui/hosts/_probe/embed-entry.d.ts.map +1 -0
  143. package/dist/tui/hosts/_probe/embed-entry.js +8 -0
  144. package/dist/tui/hosts/_probe/embed-entry.js.map +1 -0
  145. package/dist/tui/hosts/pi/embed-entry.d.ts +3 -0
  146. package/dist/tui/hosts/pi/embed-entry.d.ts.map +1 -0
  147. package/dist/tui/hosts/pi/embed-entry.js +219 -0
  148. package/dist/tui/hosts/pi/embed-entry.js.map +1 -0
  149. package/dist/tui/hosts/pi/inject.d.ts +32 -0
  150. package/dist/tui/hosts/pi/inject.d.ts.map +1 -0
  151. package/dist/tui/hosts/pi/inject.js +53 -0
  152. package/dist/tui/hosts/pi/inject.js.map +1 -0
  153. package/dist/tui/hosts/standalone.d.ts +2 -0
  154. package/dist/tui/hosts/standalone.d.ts.map +1 -0
  155. package/dist/tui/hosts/standalone.js +145 -0
  156. package/dist/tui/hosts/standalone.js.map +1 -0
  157. package/dist/tui/skins/pi-tui/input.d.ts +5 -0
  158. package/dist/tui/skins/pi-tui/input.d.ts.map +1 -0
  159. package/dist/tui/skins/pi-tui/input.js +38 -0
  160. package/dist/tui/skins/pi-tui/input.js.map +1 -0
  161. package/dist/tui/skins/pi-tui/pi-theme-adapter.d.ts +4 -0
  162. package/dist/tui/skins/pi-tui/pi-theme-adapter.d.ts.map +1 -0
  163. package/dist/tui/skins/pi-tui/pi-theme-adapter.js +27 -0
  164. package/dist/tui/skins/pi-tui/pi-theme-adapter.js.map +1 -0
  165. package/dist/tui/skins/pi-tui/render.d.ts +35 -0
  166. package/dist/tui/skins/pi-tui/render.d.ts.map +1 -0
  167. package/dist/tui/skins/pi-tui/render.js +154 -0
  168. package/dist/tui/skins/pi-tui/render.js.map +1 -0
  169. package/dist/tui/skins/pi-tui/theme.d.ts +10 -0
  170. package/dist/tui/skins/pi-tui/theme.d.ts.map +1 -0
  171. package/dist/tui/skins/pi-tui/theme.js +58 -0
  172. package/dist/tui/skins/pi-tui/theme.js.map +1 -0
  173. package/docs/authoring.md +53 -1
  174. package/docs/commands.md +4 -0
  175. package/docs/compatibility.md +7 -7
  176. package/docs/concepts.md +4 -2
  177. package/docs/runtime.md +36 -1
  178. package/docs/troubleshooting.md +18 -1
  179. package/docs/tui-architecture.md +501 -0
  180. package/package.json +11 -2
@@ -0,0 +1,533 @@
1
+ import crypto from "node:crypto";
2
+ import fs from "node:fs";
3
+ import os from "node:os";
4
+ import path from "node:path";
5
+ import { spawn } from "node:child_process";
6
+
7
+ type RuntimeScope = "local" | "global";
8
+
9
+ type RuntimeBundle = {
10
+ fingerprint: string;
11
+ injection: {
12
+ instructions: Array<{ relativePath: string; content: string }>;
13
+ rules: Array<{ relativePath: string; content: string }>;
14
+ skills: Array<{ name: string; description?: string; path: string; sourcePath: string }>;
15
+ };
16
+ capabilities: {
17
+ runtimeMode: string;
18
+ modelInjection: { instructions: boolean; rules: boolean };
19
+ skillPathDiscovery: boolean;
20
+ nativeSkillHotSwap: boolean;
21
+ };
22
+ };
23
+
24
+ type RuntimeState = {
25
+ activeNames: string[];
26
+ bundle: RuntimeBundle;
27
+ systemBlock: string;
28
+ activatedAt: string;
29
+ };
30
+
31
+ type RuntimeUiEvent = {
32
+ id: string;
33
+ sessionID: string;
34
+ title: string;
35
+ message: string;
36
+ variant: "info" | "success" | "error";
37
+ createdAt: string;
38
+ };
39
+
40
+ type OpenCodeClient = {
41
+ tui?: {
42
+ showToast?: (input: {
43
+ directory?: string;
44
+ title?: string;
45
+ message: string;
46
+ variant: "info" | "success" | "warning" | "error";
47
+ duration?: number;
48
+ }) => Promise<unknown> | unknown;
49
+ };
50
+ };
51
+
52
+ type OpenCodeConfigInput = {
53
+ command?: Record<string, { description?: string; template: string }>;
54
+ };
55
+
56
+ const DEFAULT_TOAST_DURATION_MS = 5000;
57
+ const MAX_TOAST_DURATION_MS = 3_600_000;
58
+
59
+ class LoadoutsRuntimeCommandHandledError extends Error {
60
+ constructor(message: string) {
61
+ super(message);
62
+ this.name = "LoadoutsRuntimeCommandHandledError";
63
+ }
64
+ }
65
+
66
+ const sessions = new Map<string, RuntimeState>();
67
+
68
+ const aliases: Record<string, string> = {
69
+ "": "help",
70
+ status: "status",
71
+ s: "status",
72
+ activate: "activate",
73
+ a: "activate",
74
+ use: "activate",
75
+ deactivate: "deactivate",
76
+ d: "deactivate",
77
+ remove: "deactivate",
78
+ rm: "deactivate",
79
+ clear: "deactivate",
80
+ list: "list",
81
+ ls: "list",
82
+ info: "info",
83
+ i: "info",
84
+ show: "show",
85
+ "system-block": "system-block",
86
+ help: "help",
87
+ "-h": "help",
88
+ "--help": "help",
89
+ };
90
+
91
+ function tokenize(text: string): string[] {
92
+ const tokens: string[] = [];
93
+ let current = "";
94
+ let quote: string | undefined;
95
+
96
+ for (let i = 0; i < text.length; i += 1) {
97
+ const ch = text[i];
98
+ if (quote) {
99
+ if (ch === "\\" && i + 1 < text.length) {
100
+ current += text[i + 1];
101
+ i += 1;
102
+ continue;
103
+ }
104
+ if (ch === quote) {
105
+ quote = undefined;
106
+ continue;
107
+ }
108
+ current += ch;
109
+ continue;
110
+ }
111
+ if (ch === "'" || ch === '"') {
112
+ quote = ch;
113
+ continue;
114
+ }
115
+ if (/\s/.test(ch)) {
116
+ if (current) tokens.push(current);
117
+ current = "";
118
+ continue;
119
+ }
120
+ current += ch;
121
+ }
122
+
123
+ if (current) tokens.push(current);
124
+ return tokens;
125
+ }
126
+
127
+ function parseArgs(argumentsText: string): { action: string; names: string[]; scope: RuntimeScope } {
128
+ const tokens = tokenize(argumentsText.trim());
129
+ if (tokens[0] === "/loadouts" || tokens[0] === "loadouts") {
130
+ tokens.shift();
131
+ }
132
+ const action = aliases[(tokens.shift() ?? "").toLowerCase()];
133
+ if (!action) throw new Error(`unknown /loadouts command: ${argumentsText || "(empty)"}`);
134
+
135
+ let local = false;
136
+ let global = false;
137
+ const names: string[] = [];
138
+ for (const token of tokens) {
139
+ if (token === "-l" || token === "--local") {
140
+ local = true;
141
+ continue;
142
+ }
143
+ if (token === "-g" || token === "--global") {
144
+ global = true;
145
+ continue;
146
+ }
147
+ names.push(token);
148
+ }
149
+
150
+ if (local && global) throw new Error("use either --local or --global, not both");
151
+ if ((local || global) && !["activate", "list", "info"].includes(action)) {
152
+ throw new Error("scope flags are only supported for activate, list, and info");
153
+ }
154
+ if (action === "activate" && names.length === 0) {
155
+ throw new Error("activate requires at least one loadout name");
156
+ }
157
+
158
+ return { action, names, scope: global ? "global" : "local" };
159
+ }
160
+
161
+ function scopeFlag(scope: RuntimeScope): string {
162
+ return scope === "global" ? "--global" : "--local";
163
+ }
164
+
165
+ function shortFingerprint(fingerprint: string): string {
166
+ return fingerprint.replace(/^sha256:/, "").slice(0, 12);
167
+ }
168
+
169
+ function execLoadouts(args: string[], cwd: string): Promise<string> {
170
+ return new Promise((resolve, reject) => {
171
+ const child = spawn("loadouts", args, { cwd, stdio: ["ignore", "pipe", "pipe"] });
172
+ let stdout = "";
173
+ let stderr = "";
174
+ child.stdout.setEncoding("utf-8");
175
+ child.stderr.setEncoding("utf-8");
176
+ child.stdout.on("data", (chunk: string) => {
177
+ stdout += chunk;
178
+ });
179
+ child.stderr.on("data", (chunk: string) => {
180
+ stderr += chunk;
181
+ });
182
+ child.on("error", reject);
183
+ child.on("close", (code) => {
184
+ if (code === 0) resolve(stdout);
185
+ else reject(new Error((stderr || stdout || `loadouts exited with ${code}`).trim()));
186
+ });
187
+ });
188
+ }
189
+
190
+ function renderSystemBlock(bundle: RuntimeBundle): string {
191
+ const lines: string[] = [];
192
+ lines.push("[loadout-runtime:v1]");
193
+ lines.push(`fingerprint: ${bundle.fingerprint}`);
194
+ lines.push(
195
+ `capabilities: mode=${bundle.capabilities.runtimeMode}, instructionInjection=${bundle.capabilities.modelInjection.instructions}, ruleInjection=${bundle.capabilities.modelInjection.rules}, skillPathDiscovery=${bundle.capabilities.skillPathDiscovery}, nativeSkillHotSwap=${bundle.capabilities.nativeSkillHotSwap}`
196
+ );
197
+ lines.push("");
198
+ lines.push("## Instructions (Model Injection Ready)");
199
+ for (const item of bundle.injection.instructions) {
200
+ lines.push(`### ${item.relativePath}`);
201
+ lines.push(item.content);
202
+ lines.push("");
203
+ }
204
+ if (bundle.injection.instructions.length === 0) lines.push("(none)");
205
+ lines.push("## Rules (Model Injection Ready)");
206
+ for (const item of bundle.injection.rules) {
207
+ lines.push(`### ${item.relativePath}`);
208
+ lines.push(item.content);
209
+ lines.push("");
210
+ }
211
+ if (bundle.injection.rules.length === 0) lines.push("(none)");
212
+ lines.push("## Skills (Path Discovery Only)");
213
+ lines.push("Native skill hot-swap is disabled in runtime v1.");
214
+ for (const skill of bundle.injection.skills) {
215
+ const description = skill.description ? ` - ${skill.description}` : "";
216
+ lines.push(`- ${skill.name}${description}`);
217
+ lines.push(` path: ${skill.path}`);
218
+ lines.push(` sourcePath: ${skill.sourcePath}`);
219
+ }
220
+ if (bundle.injection.skills.length === 0) lines.push("(none)");
221
+ return lines.join("\n").trimEnd() + "\n";
222
+ }
223
+
224
+ async function activate(names: string[], scope: RuntimeScope, sessionID: string, cwd: string): Promise<string> {
225
+ const json = await execLoadouts(["runtime", ...names, "--tool", "opencode", "--json", scopeFlag(scope)], cwd);
226
+ const bundle = JSON.parse(json) as RuntimeBundle;
227
+ sessions.set(sessionID, {
228
+ activeNames: names,
229
+ bundle,
230
+ systemBlock: renderSystemBlock(bundle),
231
+ activatedAt: new Date().toISOString(),
232
+ });
233
+ return `runtime: activated (${scope}) ${names.join(", ")} [${shortFingerprint(bundle.fingerprint)}]`;
234
+ }
235
+
236
+ function pluralize(count: number, singular: string, plural = `${singular}s`): string {
237
+ return `${count} ${count === 1 ? singular : plural}`;
238
+ }
239
+
240
+ function runtimeActivationToast(state: RuntimeState | undefined): string | undefined {
241
+ if (!state) return undefined;
242
+ const injected = state.bundle.injection;
243
+ return [
244
+ `Loaded ${state.activeNames.join(", ")}`,
245
+ `Injected: ${pluralize(injected.instructions.length, "instruction")}, ${pluralize(injected.rules.length, "rule")}, ${pluralize(injected.skills.length, "skill")}`,
246
+ `Fingerprint: ${shortFingerprint(state.bundle.fingerprint)}`,
247
+ ].join("\n");
248
+ }
249
+
250
+ function runtimeToastVariant(action: string): "info" | "success" {
251
+ return action === "activate" || action === "deactivate" ? "success" : "info";
252
+ }
253
+
254
+ function runtimeEventTitle(action: string, variant: "info" | "success" | "error"): string {
255
+ if (variant === "error") return "Loadouts Error";
256
+ if (action === "activate") return "Loadouts Activated";
257
+ if (action === "deactivate") return "Loadouts Deactivated";
258
+ if (action === "list") return "Loadouts List";
259
+ if (action === "info") return "Loadouts Info";
260
+ if (action === "help") return "Loadouts Help";
261
+ return "Loadouts Runtime";
262
+ }
263
+
264
+ function helpText(): string {
265
+ return [
266
+ "runtime commands:",
267
+ " (empty|help|-h|--help)",
268
+ " status|s",
269
+ " activate|a|use <names...> [-l|--local|-g|--global]",
270
+ " deactivate|d|remove|rm|clear",
271
+ " list|ls [-l|--local|-g|--global]",
272
+ " info|i [names...] [-l|--local|-g|--global]",
273
+ " show",
274
+ " system-block",
275
+ ].join("\n");
276
+ }
277
+
278
+ function parseToastDuration(value: unknown): number | undefined {
279
+ if (typeof value !== "number") return undefined;
280
+ if (!Number.isFinite(value) || value < 0) return undefined;
281
+ return Math.min(value, MAX_TOAST_DURATION_MS);
282
+ }
283
+
284
+ function parseToastDurationFromEnv(value: string | undefined): number | undefined {
285
+ if (value === undefined) return undefined;
286
+ const trimmed = value.trim();
287
+ if (trimmed.length === 0) return undefined;
288
+ return parseToastDuration(Number(trimmed));
289
+ }
290
+
291
+ function resolveToastDuration(runtimeOptions?: Record<string, unknown>): number {
292
+ const fromRuntime = parseToastDuration(runtimeOptions?.toastDuration);
293
+ if (fromRuntime !== undefined) return fromRuntime;
294
+
295
+ const fromEnv = parseToastDurationFromEnv(process.env.LOADOUTS_OPENCODE_TOAST_DURATION);
296
+ if (fromEnv !== undefined) return fromEnv;
297
+
298
+ return DEFAULT_TOAST_DURATION_MS;
299
+ }
300
+
301
+ async function handle(
302
+ argumentsText: string,
303
+ sessionID: string,
304
+ cwd: string
305
+ ): Promise<{ action: string; text: string }> {
306
+ const command = parseArgs(argumentsText);
307
+ const state = sessions.get(sessionID);
308
+
309
+ if (command.action === "help") {
310
+ return {
311
+ action: command.action,
312
+ text: helpText(),
313
+ };
314
+ }
315
+ if (command.action === "activate") {
316
+ return {
317
+ action: command.action,
318
+ text: await activate(command.names, command.scope, sessionID, cwd),
319
+ };
320
+ }
321
+ if (command.action === "deactivate") {
322
+ return {
323
+ action: command.action,
324
+ text: sessions.delete(sessionID) ? "runtime: deactivated" : "runtime: already inactive",
325
+ };
326
+ }
327
+ if (command.action === "list") {
328
+ return { action: command.action, text: (await execLoadouts(["list", scopeFlag(command.scope)], cwd)).trim() };
329
+ }
330
+ if (command.action === "info") {
331
+ return {
332
+ action: command.action,
333
+ text: (await execLoadouts(["info", ...command.names, scopeFlag(command.scope)], cwd)).trim(),
334
+ };
335
+ }
336
+ if (command.action === "status") {
337
+ return {
338
+ action: command.action,
339
+ text: state
340
+ ? `runtime: active ${state.activeNames.join(", ")} [${shortFingerprint(state.bundle.fingerprint)}]`
341
+ : "runtime: inactive",
342
+ };
343
+ }
344
+ if (command.action === "show") {
345
+ if (!state) return { action: command.action, text: "runtime: inactive" };
346
+ const injected = state.bundle.injection;
347
+ return {
348
+ action: command.action,
349
+ text: [
350
+ "runtime: active",
351
+ `loadouts: ${state.activeNames.join(", ")}`,
352
+ `fingerprint: ${state.bundle.fingerprint}`,
353
+ `injected: instructions=${injected.instructions.length}, rules=${injected.rules.length}, skills=${injected.skills.length}`,
354
+ `activatedAt: ${state.activatedAt}`,
355
+ ].join("\n"),
356
+ };
357
+ }
358
+ if (command.action === "system-block") {
359
+ return {
360
+ action: command.action,
361
+ text: state?.systemBlock ?? "runtime: inactive",
362
+ };
363
+ }
364
+ return { action: command.action, text: "runtime: unsupported command" };
365
+ }
366
+
367
+ async function showRuntimeToast(
368
+ client: OpenCodeClient | undefined,
369
+ directory: string,
370
+ message: string,
371
+ variant: "info" | "success" | "error",
372
+ duration: number
373
+ ): Promise<void> {
374
+ if (duration === 0) return;
375
+
376
+ const showToast = client?.tui?.showToast;
377
+ if (!showToast) return;
378
+
379
+ try {
380
+ await showToast({
381
+ directory,
382
+ title: "Loadouts",
383
+ message,
384
+ variant,
385
+ duration,
386
+ });
387
+ } catch {
388
+ // Toast delivery is best-effort; command consumption should not depend on TUI availability.
389
+ }
390
+ }
391
+
392
+ function runtimeStatePath(cwd: string): string {
393
+ const cacheRoot = process.env.XDG_CACHE_HOME || path.join(os.homedir(), ".cache");
394
+ const key = crypto.createHash("sha256").update(path.resolve(cwd)).digest("hex").slice(0, 32);
395
+ return path.join(cacheRoot, "loadouts", "opencode-runtime", `${key}.json`);
396
+ }
397
+
398
+ function runtimeEventPath(cwd: string): string {
399
+ const cacheRoot = process.env.XDG_CACHE_HOME || path.join(os.homedir(), ".cache");
400
+ const key = crypto.createHash("sha256").update(path.resolve(cwd)).digest("hex").slice(0, 32);
401
+ return path.join(cacheRoot, "loadouts", "opencode-runtime", `${key}.event.json`);
402
+ }
403
+
404
+ function readPersistedStates(cwd: string): Record<string, RuntimeState> {
405
+ try {
406
+ const file = runtimeStatePath(cwd);
407
+ if (!fs.existsSync(file)) return {};
408
+ return JSON.parse(fs.readFileSync(file, "utf-8")) as Record<string, RuntimeState>;
409
+ } catch {
410
+ return {};
411
+ }
412
+ }
413
+
414
+ function loadPersistedRuntimeState(cwd: string, sessionID: string): void {
415
+ if (sessions.has(sessionID)) return;
416
+ const state = readPersistedStates(cwd)[sessionID];
417
+ if (state) sessions.set(sessionID, state);
418
+ }
419
+
420
+ function persistRuntimeState(cwd: string, sessionID: string): void {
421
+ try {
422
+ const file = runtimeStatePath(cwd);
423
+ const states = readPersistedStates(cwd);
424
+ const state = sessions.get(sessionID);
425
+ if (state) states[sessionID] = state;
426
+ else delete states[sessionID];
427
+
428
+ fs.mkdirSync(path.dirname(file), { recursive: true });
429
+ fs.writeFileSync(file, JSON.stringify(states, null, 2), "utf-8");
430
+ } catch {
431
+ // The in-memory runtime still works inside a long-lived OpenCode process.
432
+ }
433
+ }
434
+
435
+ function readRuntimeUiEvents(cwd: string): Record<string, RuntimeUiEvent> {
436
+ try {
437
+ const file = runtimeEventPath(cwd);
438
+ if (!fs.existsSync(file)) return {};
439
+ return JSON.parse(fs.readFileSync(file, "utf-8")) as Record<string, RuntimeUiEvent>;
440
+ } catch {
441
+ return {};
442
+ }
443
+ }
444
+
445
+ function persistRuntimeUiEvent(
446
+ cwd: string,
447
+ sessionID: string,
448
+ title: string,
449
+ message: string,
450
+ variant: "info" | "success" | "error"
451
+ ): void {
452
+ try {
453
+ const file = runtimeEventPath(cwd);
454
+ const events = readRuntimeUiEvents(cwd);
455
+ events[sessionID] = {
456
+ id: `${Date.now()}-${Math.random().toString(36).slice(2)}`,
457
+ sessionID,
458
+ title,
459
+ message,
460
+ variant,
461
+ createdAt: new Date().toISOString(),
462
+ };
463
+ fs.mkdirSync(path.dirname(file), { recursive: true });
464
+ fs.writeFileSync(file, JSON.stringify(events, null, 2), "utf-8");
465
+ } catch {
466
+ // TUI event delivery is best-effort and should not affect runtime injection.
467
+ }
468
+ }
469
+
470
+ export const LoadoutsRuntimePlugin = async ({
471
+ directory,
472
+ worktree,
473
+ client,
474
+ }: {
475
+ directory: string;
476
+ worktree: string;
477
+ client?: OpenCodeClient;
478
+ },
479
+ runtimeOptions?: Record<string, unknown>) => {
480
+ const toastDuration = resolveToastDuration(runtimeOptions);
481
+
482
+ return {
483
+ config: async (config: OpenCodeConfigInput) => {
484
+ config.command ??= {};
485
+ config.command.loadouts = {
486
+ description: "Manage session-local Loadouts runtime activation",
487
+ template: "",
488
+ };
489
+ },
490
+
491
+ "command.execute.before": async (
492
+ input: { command: string; sessionID: string; arguments: string },
493
+ output: { parts: Array<{ type: "text"; text: string }> }
494
+ ) => {
495
+ if (input.command !== "loadouts") return;
496
+ const cwd = directory || worktree || process.cwd();
497
+ loadPersistedRuntimeState(cwd, input.sessionID);
498
+ try {
499
+ const result = await handle(input.arguments, input.sessionID, cwd);
500
+ output.parts = [];
501
+ persistRuntimeState(cwd, input.sessionID);
502
+ const state = sessions.get(input.sessionID);
503
+ const toastMessage =
504
+ result.action === "activate" ? runtimeActivationToast(state) ?? result.text : result.text;
505
+ const variant = runtimeToastVariant(result.action);
506
+ persistRuntimeUiEvent(cwd, input.sessionID, runtimeEventTitle(result.action, variant), toastMessage, variant);
507
+ await showRuntimeToast(client, cwd, toastMessage, variant, toastDuration);
508
+ throw new LoadoutsRuntimeCommandHandledError(result.text);
509
+ } catch (error) {
510
+ if (error instanceof LoadoutsRuntimeCommandHandledError) throw error;
511
+
512
+ const text = `runtime: error: ${error instanceof Error ? error.message : String(error)}`;
513
+ output.parts = [];
514
+ persistRuntimeUiEvent(cwd, input.sessionID, runtimeEventTitle("error", "error"), text, "error");
515
+ await showRuntimeToast(client, cwd, text, "error", toastDuration);
516
+ throw new LoadoutsRuntimeCommandHandledError(text);
517
+ }
518
+ },
519
+
520
+ "experimental.chat.system.transform": async (
521
+ input: { sessionID?: string },
522
+ output: { system: string[] }
523
+ ) => {
524
+ if (!input.sessionID) return;
525
+ const cwd = directory || worktree || process.cwd();
526
+ loadPersistedRuntimeState(cwd, input.sessionID);
527
+ const state = sessions.get(input.sessionID);
528
+ if (state) output.system.push(state.systemBlock);
529
+ },
530
+ };
531
+ };
532
+
533
+ export default LoadoutsRuntimePlugin;
@@ -0,0 +1,5 @@
1
+ {
2
+ "$schema": "https://opencode.ai/tui.json",
3
+ // Route-based embedded dashboard plugin generated from src/tui/hosts/opencode/embed-entry.tsx.
4
+ "plugin": ["./plugins/loadouts-runtime-tui.tsx"]
5
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"agent-transforms.d.ts","sourceRoot":"","sources":["../../src/builtins/agent-transforms.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEjE,KAAK,WAAW,GAAG,UAAU,GAAG,QAAQ,GAAG,aAAa,GAAG,OAAO,CAAC;AA0HnE,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC,IACnE,MAAM,YAAY,KAAG,UAAU,CAIxC;AA6DD,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,YAAY,GAAG,MAAM,CAG5E;AAED,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,YAAY,GAAG,MAAM,CAG1E;AAED,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,YAAY,GAAG,MAAM,CAG1E;AA4FD,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,YAAY,GAAG,MAAM,CAGzE"}
1
+ {"version":3,"file":"agent-transforms.d.ts","sourceRoot":"","sources":["../../src/builtins/agent-transforms.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEjE,KAAK,WAAW,GAAG,UAAU,GAAG,QAAQ,GAAG,aAAa,GAAG,OAAO,CAAC;AA2HnE,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC,IACnE,MAAM,YAAY,KAAG,UAAU,CAIxC;AA6DD,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,YAAY,GAAG,MAAM,CAG5E;AAED,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,YAAY,GAAG,MAAM,CAG1E;AAED,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,YAAY,GAAG,MAAM,CAG1E;AA4FD,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,YAAY,GAAG,MAAM,CAGzE"}
@@ -7,6 +7,7 @@ const MARKDOWN_NATIVE_KEYS = {
7
7
  "mode",
8
8
  "model",
9
9
  "variant",
10
+ "reasoningEffort",
10
11
  "temperature",
11
12
  "top_p",
12
13
  "steps",
@@ -1 +1 @@
1
- {"version":3,"file":"agent-transforms.js","sourceRoot":"","sources":["../../src/builtins/agent-transforms.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EACL,wBAAwB,EACxB,4BAA4B,GAE7B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAKxC,MAAM,oBAAoB,GAAuD;IAC/E,QAAQ,EAAE,IAAI,GAAG,CAAC;QAChB,aAAa;QACb,MAAM;QACN,OAAO;QACP,SAAS;QACT,aAAa;QACb,OAAO;QACP,OAAO;QACP,SAAS;QACT,QAAQ;QACR,OAAO;QACP,YAAY;KACb,CAAC;IACF,MAAM,EAAE,IAAI,GAAG,CAAC;QACd,MAAM;QACN,aAAa;QACb,OAAO;QACP,UAAU;QACV,eAAe;KAChB,CAAC;IACF,aAAa,EAAE,IAAI,GAAG,CAAC;QACrB,MAAM;QACN,aAAa;QACb,OAAO;QACP,iBAAiB;QACjB,OAAO;QACP,gBAAgB;QAChB,UAAU;QACV,QAAQ;QACR,YAAY;QACZ,OAAO;QACP,QAAQ;QACR,YAAY;QACZ,QAAQ;QACR,WAAW;QACX,OAAO;QACP,eAAe;KAChB,CAAC;CACH,CAAC;AAEF,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,CAAC,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AACvE,CAAC;AAED,SAAS,WAAW,CAAC,KAA8B;IACjD,OAAO,EAAE,GAAG,KAAK,EAAE,CAAC;AACtB,CAAC;AAED,SAAS,YAAY,CAAC,IAA8B;IAClD,IAAI,CAAC,IAAI;QAAE,OAAO,OAAO,CAAC;IAC1B,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;AACvE,CAAC;AAED,SAAS,UAAU,CAAC,WAA2B;IAC7C,OAAO,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;AAClE,CAAC;AAED,SAAS,gBAAgB,CACvB,WAA2B,EAC3B,MAAmB;IAEnB,MAAM,OAAO,GAAG,UAAU,CAAC,WAAW,CAAC,CAAC;IACxC,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAChC,OAAO,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;AAC1C,CAAC;AAED,SAAS,sBAAsB,CAAC,WAA2B;IACzD,MAAM,MAAM,GAAG,WAAW,CAAC,WAAW,CAAC,CAAC;IACxC,OAAO,MAAM,CAAC,OAAO,CAAC;IACtB,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,eAAe,CACtB,WAAoC,EACpC,UAAmC;IAEnC,MAAM,QAAQ,GAAG,QAAQ,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;IAChF,WAAW,CAAC,UAAU,GAAG,EAAE,GAAG,QAAQ,EAAE,GAAG,UAAU,EAAE,CAAC;AAC1D,CAAC;AAED,SAAS,eAAe,CAAC,WAAoC;IAC3D,OAAO,MAAM,CAAC,WAAW,CACvB,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,KAAK,SAAS,CAAC,CACvE,CAAC;AACJ,CAAC;AAED,SAAS,eAAe,CACtB,WAAoC,EACpC,MAAqC;IAErC,MAAM,OAAO,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAC;IAC7C,OAAO,MAAM,CAAC,WAAW,CACvB,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAChE,CAAC;AACJ,CAAC;AAED,SAAS,uBAAuB,CAAC,GAAW,EAAE,MAAqC;IACjF,MAAM,EAAE,WAAW,EAAE,GAAG,wBAAwB,CAAC,GAAG,CAAC,CAAC;IACtD,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC;IAElE,MAAM,OAAO,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAC;IAC7C,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IAE7E,IAAI,MAAM,KAAK,UAAU,EAAE,CAAC;QAC1B,OAAO,OAAO,WAAW,CAAC,WAAW,KAAK,QAAQ,IAAI,WAAW,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC;IAC3F,CAAC;IAED,IAAI,MAAM,KAAK,aAAa,EAAE,CAAC;QAC7B,OAAO,CACL,OAAO,WAAW,CAAC,IAAI,KAAK,QAAQ;YACpC,WAAW,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC;YAC3B,OAAO,WAAW,CAAC,WAAW,KAAK,QAAQ;YAC3C,WAAW,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CACnC,CAAC;IACJ,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,MAAqC;IAC3E,OAAO,CAAC,IAAkB,EAAc,EAAE;QACxC,MAAM,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACtC,OAAO,uBAAuB,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC;IACnE,CAAC,CAAC;AACJ,CAAC;AAED,SAAS,wBAAwB,CAC/B,WAA2B,EAC3B,IAA8B;IAE9B,MAAM,OAAO,GAAG,gBAAgB,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;IAC1D,MAAM,MAAM,GAAG,eAAe,CAAC,sBAAsB,CAAC,WAAW,CAAC,EAAE,UAAU,CAAC,CAAC;IAEhF,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS;QAAE,OAAO,MAAM,CAAC,KAAK,CAAC;IACpD,IAAI,OAAO,MAAM,CAAC,WAAW,KAAK,QAAQ,IAAI,MAAM,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9E,MAAM,CAAC,WAAW,GAAG,GAAG,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC;IACrD,CAAC;IAED,MAAM,MAAM,GAAG,EAAE,GAAG,MAAM,EAAE,GAAG,OAAO,EAAE,CAAC;IACzC,IAAI,WAAW,CAAC,QAAQ,KAAK,IAAI,EAAE,CAAC;QAClC,eAAe,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;IAC5C,CAAC;IAED,OAAO,eAAe,CAAC,MAAM,CAAC,CAAC;AACjC,CAAC;AAED,SAAS,sBAAsB,CAC7B,WAA2B,EAC3B,IAA8B;IAE9B,MAAM,OAAO,GAAG,gBAAgB,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;IACxD,MAAM,MAAM,GAAG,eAAe,CAAC,sBAAsB,CAAC,WAAW,CAAC,EAAE,QAAQ,CAAC,CAAC;IAE9E,MAAM,CAAC,IAAI,GAAG,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IACjF,IAAI,OAAO,MAAM,CAAC,WAAW,KAAK,QAAQ,IAAI,MAAM,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9E,MAAM,CAAC,WAAW,GAAG,GAAG,MAAM,CAAC,IAAI,QAAQ,CAAC;IAC9C,CAAC;IACD,IAAI,WAAW,CAAC,UAAU,KAAK,SAAS,IAAI,MAAM,CAAC,aAAa,KAAK,SAAS,EAAE,CAAC;QAC/E,MAAM,CAAC,aAAa,GAAG,WAAW,CAAC,UAAU,CAAC;IAChD,CAAC;IAED,OAAO,eAAe,CAAC,EAAE,GAAG,MAAM,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC;AACpD,CAAC;AAED,SAAS,sBAAsB,CAC7B,WAA2B,EAC3B,IAA8B;IAE9B,MAAM,OAAO,GAAG,gBAAgB,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;IAC7D,MAAM,MAAM,GAAG,eAAe,CAAC,sBAAsB,CAAC,WAAW,CAAC,EAAE,aAAa,CAAC,CAAC;IAEnF,MAAM,CAAC,IAAI,GAAG,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IACjF,IAAI,OAAO,MAAM,CAAC,WAAW,KAAK,QAAQ,IAAI,MAAM,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9E,MAAM,CAAC,WAAW,GAAG,GAAG,MAAM,CAAC,IAAI,QAAQ,CAAC;IAC9C,CAAC;IACD,IAAI,WAAW,CAAC,QAAQ,KAAK,IAAI,IAAI,MAAM,CAAC,cAAc,KAAK,SAAS,EAAE,CAAC;QACzE,MAAM,CAAC,cAAc,GAAG,MAAM,CAAC;IACjC,CAAC;IACD,IAAI,WAAW,CAAC,UAAU,KAAK,SAAS,IAAI,MAAM,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;QAC5E,MAAM,CAAC,UAAU,GAAG,WAAW,CAAC,UAAU,CAAC;IAC7C,CAAC;IAED,OAAO,eAAe,CAAC,EAAE,GAAG,MAAM,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC;AACpD,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,GAAW,EAAE,IAAmB;IAClE,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,GAAG,wBAAwB,CAAC,GAAG,CAAC,CAAC;IAC5D,OAAO,4BAA4B,CAAC,wBAAwB,CAAC,WAAW,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;AACzF,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,GAAW,EAAE,IAAmB;IAChE,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,GAAG,wBAAwB,CAAC,GAAG,CAAC,CAAC;IAC5D,OAAO,4BAA4B,CAAC,sBAAsB,CAAC,WAAW,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;AACvF,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,GAAW,EAAE,IAAmB;IAChE,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,GAAG,wBAAwB,CAAC,GAAG,CAAC,CAAC;IAC5D,OAAO,4BAA4B,CAAC,sBAAsB,CAAC,WAAW,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;AACvF,CAAC;AAED,SAAS,gBAAgB,CACvB,WAA2B,EAC3B,IAAY,EACZ,IAA8B;IAE9B,MAAM,OAAO,GAAG,gBAAgB,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IACvD,MAAM,MAAM,GAA4B;QACtC,IAAI,EAAE,OAAO,WAAW,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC;QAClF,WAAW,EACT,OAAO,WAAW,CAAC,WAAW,KAAK,QAAQ,IAAI,WAAW,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC;YAC/E,CAAC,CAAC,WAAW,CAAC,WAAW;YACzB,CAAC,CAAC,GAAG,YAAY,CAAC,IAAI,CAAC,QAAQ;QACnC,sBAAsB,EAAE,IAAI,CAAC,IAAI,EAAE;KACpC,CAAC;IAEF,IAAI,OAAO,WAAW,CAAC,KAAK,KAAK,QAAQ,IAAI,WAAW,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QAC7E,MAAM,CAAC,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC;IACnC,CAAC;IACD,IAAI,WAAW,CAAC,QAAQ,KAAK,IAAI,EAAE,CAAC;QAClC,MAAM,CAAC,YAAY,GAAG,WAAW,CAAC;IACpC,CAAC;IAED,OAAO,eAAe,CAAC,EAAE,GAAG,MAAM,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC;AACpD,CAAC;AAED,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,KAAK,KAAK,IAAI,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,OAAO,KAAK,CAAC,CAAC;AAClF,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAa;IACrC,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACzB,OAAO,QAAQ,KAAK,CAAC,UAAU,CAAC,KAAK,EAAE,WAAW,CAAC,OAAO,CAAC;IAC7D,CAAC;IACD,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AAC/B,CAAC;AAED,SAAS,eAAe,CAAC,KAAc;IACrC,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,gBAAgB,CAAC,KAAK,CAAC,CAAC;IAC9D,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,SAAS;QAAE,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;IAClF,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAChC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;QAClD,OAAO,IAAI,KAAK,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;IACtD,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;AAC7D,CAAC;AAED,SAAS,gBAAgB,CACvB,KAA8B,EAC9B,SAAmB,EAAE;IAErB,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,MAAM,GAA6C,EAAE,CAAC;IAC5D,MAAM,YAAY,GAA+C,EAAE,CAAC;IAEpE,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACjD,IAAI,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC;YACvE,KAAK,CAAC,IAAI,CAAC,GAAG,GAAG,MAAM,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACjD,SAAS;QACX,CAAC;QAED,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;YAClD,YAAY,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;YAChC,SAAS;QACX,CAAC;QAED,IAAI,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YACpB,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;YAC1B,SAAS;QACX,CAAC;QAED,MAAM,IAAI,KAAK,CAAC,mCAAmC,GAAG,oBAAoB,CAAC,CAAC;IAC9E,CAAC;IAED,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,EAAE,CAAC;QAClC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC9C,KAAK,CAAC,IAAI,CAAC,GAAG,gBAAgB,CAAC,KAAK,EAAE,CAAC,GAAG,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;IAC3D,CAAC;IAED,KAAK,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,YAAY,EAAE,CAAC;QAC1C,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACf,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAChD,KAAK,CAAC,IAAI,CAAC,GAAG,gBAAgB,CAAC,KAAK,EAAE,CAAC,GAAG,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;QAC3D,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,GAAW,EAAE,IAAmB;IAC/D,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,GAAG,wBAAwB,CAAC,GAAG,CAAC,CAAC;IAC5D,OAAO,GAAG,gBAAgB,CAAC,gBAAgB,CAAC,WAAW,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;AACvF,CAAC"}
1
+ {"version":3,"file":"agent-transforms.js","sourceRoot":"","sources":["../../src/builtins/agent-transforms.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/builtins/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AA0BnD,oEAAoE;AACpE,eAAO,MAAM,kBAAkB,+DAMrB,CAAC;AAEX,MAAM,MAAM,eAAe,GAAG,CAAC,OAAO,kBAAkB,CAAC,CAAC,MAAM,CAAC,CAAC;AAgClE,uDAAuD;AACvD,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,SAAS,GAAG,IAAI,CA2BrD"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/builtins/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AA6BnD,oEAAoE;AACpE,eAAO,MAAM,kBAAkB,+DAMrB,CAAC;AAEX,MAAM,MAAM,eAAe,GAAG,CAAC,OAAO,kBAAkB,CAAC,CAAC,MAAM,CAAC,CAAC;AAgClE,uDAAuD;AACvD,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,SAAS,GAAG,IAAI,CA8BrD"}
@@ -12,9 +12,12 @@ import { instructionKind } from "./kinds/instruction.js";
12
12
  import { agentKind } from "./kinds/agent.js";
13
13
  import { promptKind } from "./kinds/prompt.js";
14
14
  import { extensionKind } from "./kinds/extension.js";
15
+ import { extensionDirKind } from "./kinds/extension-dir.js";
15
16
  import { themeKind } from "./kinds/theme.js";
16
17
  import { opencodeConfigKind } from "./kinds/opencode-config.js";
18
+ import { opencodeTuiConfigKind } from "./kinds/opencode-tui-config.js";
17
19
  import { opencodePluginKind } from "./kinds/opencode-plugin.js";
20
+ import { opencodeCommandKind } from "./kinds/opencode-command.js";
18
21
  import { claudeCodeTool } from "./tools/claude-code.js";
19
22
  import { cursorTool } from "./tools/cursor.js";
20
23
  import { opencodeTool } from "./tools/opencode.js";
@@ -61,9 +64,12 @@ export function registerBuiltins(api) {
61
64
  api.registerKind(agentKind);
62
65
  api.registerKind(promptKind);
63
66
  api.registerKind(extensionKind);
67
+ api.registerKind(extensionDirKind);
64
68
  api.registerKind(themeKind);
65
69
  api.registerKind(opencodeConfigKind);
70
+ api.registerKind(opencodeTuiConfigKind);
66
71
  api.registerKind(opencodePluginKind);
72
+ api.registerKind(opencodeCommandKind);
67
73
  // Named transforms — referenced by name in tool target specs.
68
74
  api.registerTransform("cursor-rule-frontmatter", translateRuleFrontmatter);
69
75
  api.registerTransform("opencode-rule-frontmatter", translateRuleFrontmatter);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/builtins/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/builtins/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { KindSpec } from "../../core/registry.js";
2
+ export declare const extensionDirKind: KindSpec;
3
+ //# sourceMappingURL=extension-dir.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extension-dir.d.ts","sourceRoot":"","sources":["../../../src/builtins/kinds/extension-dir.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAEvD,eAAO,MAAM,gBAAgB,EAAE,QAM9B,CAAC"}
@@ -0,0 +1,8 @@
1
+ export const extensionDirKind = {
2
+ id: "extension-dir",
3
+ description: "Directory-based runtime extensions with package metadata.",
4
+ detect: (rel) => rel.startsWith("extensions/") && !rel.endsWith(".ts") && !rel.endsWith(".js"),
5
+ layout: "dir",
6
+ defaultTargets: {},
7
+ };
8
+ //# sourceMappingURL=extension-dir.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extension-dir.js","sourceRoot":"","sources":["../../../src/builtins/kinds/extension-dir.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,gBAAgB,GAAa;IACxC,EAAE,EAAE,eAAe;IACnB,WAAW,EAAE,2DAA2D;IACxE,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC;IAC9F,MAAM,EAAE,KAAK;IACb,cAAc,EAAE,EAAE;CACnB,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { KindSpec } from "../../core/registry.js";
2
+ export declare const opencodeCommandKind: KindSpec;
3
+ //# sourceMappingURL=opencode-command.d.ts.map