@madebywild/agent-harness-framework 0.9.1

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 (185) hide show
  1. package/dist/cli/adapters/commander.d.ts +14 -0
  2. package/dist/cli/adapters/commander.d.ts.map +1 -0
  3. package/dist/cli/adapters/commander.js +348 -0
  4. package/dist/cli/adapters/commander.js.map +1 -0
  5. package/dist/cli/adapters/interactive.d.ts +11 -0
  6. package/dist/cli/adapters/interactive.d.ts.map +1 -0
  7. package/dist/cli/adapters/interactive.js +375 -0
  8. package/dist/cli/adapters/interactive.js.map +1 -0
  9. package/dist/cli/command-registry.d.ts +27 -0
  10. package/dist/cli/command-registry.d.ts.map +1 -0
  11. package/dist/cli/command-registry.js +470 -0
  12. package/dist/cli/command-registry.js.map +1 -0
  13. package/dist/cli/contracts.d.ts +122 -0
  14. package/dist/cli/contracts.d.ts.map +1 -0
  15. package/dist/cli/contracts.js +2 -0
  16. package/dist/cli/contracts.js.map +1 -0
  17. package/dist/cli/handlers/apply.d.ts +3 -0
  18. package/dist/cli/handlers/apply.d.ts.map +1 -0
  19. package/dist/cli/handlers/apply.js +17 -0
  20. package/dist/cli/handlers/apply.js.map +1 -0
  21. package/dist/cli/handlers/doctor.d.ts +3 -0
  22. package/dist/cli/handlers/doctor.d.ts.map +1 -0
  23. package/dist/cli/handlers/doctor.js +16 -0
  24. package/dist/cli/handlers/doctor.js.map +1 -0
  25. package/dist/cli/handlers/entities.d.ts +22 -0
  26. package/dist/cli/handlers/entities.d.ts.map +1 -0
  27. package/dist/cli/handlers/entities.js +92 -0
  28. package/dist/cli/handlers/entities.js.map +1 -0
  29. package/dist/cli/handlers/init.d.ts +5 -0
  30. package/dist/cli/handlers/init.d.ts.map +1 -0
  31. package/dist/cli/handlers/init.js +17 -0
  32. package/dist/cli/handlers/init.js.map +1 -0
  33. package/dist/cli/handlers/migrate.d.ts +6 -0
  34. package/dist/cli/handlers/migrate.d.ts.map +1 -0
  35. package/dist/cli/handlers/migrate.js +22 -0
  36. package/dist/cli/handlers/migrate.js.map +1 -0
  37. package/dist/cli/handlers/plan.d.ts +5 -0
  38. package/dist/cli/handlers/plan.d.ts.map +1 -0
  39. package/dist/cli/handlers/plan.js +18 -0
  40. package/dist/cli/handlers/plan.js.map +1 -0
  41. package/dist/cli/handlers/provider.d.ts +8 -0
  42. package/dist/cli/handlers/provider.d.ts.map +1 -0
  43. package/dist/cli/handlers/provider.js +37 -0
  44. package/dist/cli/handlers/provider.js.map +1 -0
  45. package/dist/cli/handlers/registry.d.ts +27 -0
  46. package/dist/cli/handlers/registry.d.ts.map +1 -0
  47. package/dist/cli/handlers/registry.js +133 -0
  48. package/dist/cli/handlers/registry.js.map +1 -0
  49. package/dist/cli/handlers/validate.d.ts +3 -0
  50. package/dist/cli/handlers/validate.d.ts.map +1 -0
  51. package/dist/cli/handlers/validate.js +16 -0
  52. package/dist/cli/handlers/validate.js.map +1 -0
  53. package/dist/cli/handlers/watch.d.ts +6 -0
  54. package/dist/cli/handlers/watch.d.ts.map +1 -0
  55. package/dist/cli/handlers/watch.js +46 -0
  56. package/dist/cli/handlers/watch.js.map +1 -0
  57. package/dist/cli/main.d.ts +6 -0
  58. package/dist/cli/main.d.ts.map +1 -0
  59. package/dist/cli/main.js +90 -0
  60. package/dist/cli/main.js.map +1 -0
  61. package/dist/cli/renderers/json.d.ts +10 -0
  62. package/dist/cli/renderers/json.d.ts.map +1 -0
  63. package/dist/cli/renderers/json.js +17 -0
  64. package/dist/cli/renderers/json.js.map +1 -0
  65. package/dist/cli/renderers/text.d.ts +3 -0
  66. package/dist/cli/renderers/text.d.ts.map +1 -0
  67. package/dist/cli/renderers/text.js +155 -0
  68. package/dist/cli/renderers/text.js.map +1 -0
  69. package/dist/cli/utils/runtime.d.ts +26 -0
  70. package/dist/cli/utils/runtime.d.ts.map +1 -0
  71. package/dist/cli/utils/runtime.js +158 -0
  72. package/dist/cli/utils/runtime.js.map +1 -0
  73. package/dist/cli.d.ts +3 -0
  74. package/dist/cli.d.ts.map +1 -0
  75. package/dist/cli.js +14 -0
  76. package/dist/cli.js.map +1 -0
  77. package/dist/engine/entities.d.ts +33 -0
  78. package/dist/engine/entities.d.ts.map +1 -0
  79. package/dist/engine/entities.js +461 -0
  80. package/dist/engine/entities.js.map +1 -0
  81. package/dist/engine/state.d.ts +19 -0
  82. package/dist/engine/state.d.ts.map +1 -0
  83. package/dist/engine/state.js +70 -0
  84. package/dist/engine/state.js.map +1 -0
  85. package/dist/engine/utils.d.ts +28 -0
  86. package/dist/engine/utils.d.ts.map +1 -0
  87. package/dist/engine/utils.js +157 -0
  88. package/dist/engine/utils.js.map +1 -0
  89. package/dist/engine.d.ts +59 -0
  90. package/dist/engine.d.ts.map +1 -0
  91. package/dist/engine.js +398 -0
  92. package/dist/engine.js.map +1 -0
  93. package/dist/entity-registries.d.ts +40 -0
  94. package/dist/entity-registries.d.ts.map +1 -0
  95. package/dist/entity-registries.js +257 -0
  96. package/dist/entity-registries.js.map +1 -0
  97. package/dist/index.d.ts +19 -0
  98. package/dist/index.d.ts.map +1 -0
  99. package/dist/index.js +22 -0
  100. package/dist/index.js.map +1 -0
  101. package/dist/loader.d.ts +6 -0
  102. package/dist/loader.d.ts.map +1 -0
  103. package/dist/loader.js +552 -0
  104. package/dist/loader.js.map +1 -0
  105. package/dist/paths.d.ts +23 -0
  106. package/dist/paths.d.ts.map +1 -0
  107. package/dist/paths.js +40 -0
  108. package/dist/paths.js.map +1 -0
  109. package/dist/planner.d.ts +5 -0
  110. package/dist/planner.d.ts.map +1 -0
  111. package/dist/planner.js +316 -0
  112. package/dist/planner.js.map +1 -0
  113. package/dist/provider-adapters/claude.d.ts +4 -0
  114. package/dist/provider-adapters/claude.d.ts.map +1 -0
  115. package/dist/provider-adapters/claude.js +36 -0
  116. package/dist/provider-adapters/claude.js.map +1 -0
  117. package/dist/provider-adapters/codex.d.ts +4 -0
  118. package/dist/provider-adapters/codex.d.ts.map +1 -0
  119. package/dist/provider-adapters/codex.js +93 -0
  120. package/dist/provider-adapters/codex.js.map +1 -0
  121. package/dist/provider-adapters/constants.d.ts +21 -0
  122. package/dist/provider-adapters/constants.d.ts.map +1 -0
  123. package/dist/provider-adapters/constants.js +21 -0
  124. package/dist/provider-adapters/constants.js.map +1 -0
  125. package/dist/provider-adapters/copilot.d.ts +4 -0
  126. package/dist/provider-adapters/copilot.d.ts.map +1 -0
  127. package/dist/provider-adapters/copilot.js +37 -0
  128. package/dist/provider-adapters/copilot.js.map +1 -0
  129. package/dist/provider-adapters/create-adapter.d.ts +4 -0
  130. package/dist/provider-adapters/create-adapter.d.ts.map +1 -0
  131. package/dist/provider-adapters/create-adapter.js +67 -0
  132. package/dist/provider-adapters/create-adapter.js.map +1 -0
  133. package/dist/provider-adapters/mcp.d.ts +4 -0
  134. package/dist/provider-adapters/mcp.d.ts.map +1 -0
  135. package/dist/provider-adapters/mcp.js +40 -0
  136. package/dist/provider-adapters/mcp.js.map +1 -0
  137. package/dist/provider-adapters/registry.d.ts +4 -0
  138. package/dist/provider-adapters/registry.d.ts.map +1 -0
  139. package/dist/provider-adapters/registry.js +11 -0
  140. package/dist/provider-adapters/registry.js.map +1 -0
  141. package/dist/provider-adapters/renderers.d.ts +3 -0
  142. package/dist/provider-adapters/renderers.d.ts.map +1 -0
  143. package/dist/provider-adapters/renderers.js +10 -0
  144. package/dist/provider-adapters/renderers.js.map +1 -0
  145. package/dist/provider-adapters/subagents.d.ts +19 -0
  146. package/dist/provider-adapters/subagents.d.ts.map +1 -0
  147. package/dist/provider-adapters/subagents.js +58 -0
  148. package/dist/provider-adapters/subagents.js.map +1 -0
  149. package/dist/provider-adapters/types.d.ts +18 -0
  150. package/dist/provider-adapters/types.d.ts.map +1 -0
  151. package/dist/provider-adapters/types.js +2 -0
  152. package/dist/provider-adapters/types.js.map +1 -0
  153. package/dist/providers.d.ts +6 -0
  154. package/dist/providers.d.ts.map +1 -0
  155. package/dist/providers.js +15 -0
  156. package/dist/providers.js.map +1 -0
  157. package/dist/registry-validator.d.ts +3 -0
  158. package/dist/registry-validator.d.ts.map +1 -0
  159. package/dist/registry-validator.js +222 -0
  160. package/dist/registry-validator.js.map +1 -0
  161. package/dist/repository.d.ts +36 -0
  162. package/dist/repository.d.ts.map +1 -0
  163. package/dist/repository.js +314 -0
  164. package/dist/repository.js.map +1 -0
  165. package/dist/types.d.ts +190 -0
  166. package/dist/types.d.ts.map +1 -0
  167. package/dist/types.js +11 -0
  168. package/dist/types.js.map +1 -0
  169. package/dist/utils.d.ts +16 -0
  170. package/dist/utils.d.ts.map +1 -0
  171. package/dist/utils.js +115 -0
  172. package/dist/utils.js.map +1 -0
  173. package/dist/versioning/doctor.d.ts +6 -0
  174. package/dist/versioning/doctor.d.ts.map +1 -0
  175. package/dist/versioning/doctor.js +284 -0
  176. package/dist/versioning/doctor.js.map +1 -0
  177. package/dist/versioning/migrate.d.ts +9 -0
  178. package/dist/versioning/migrate.d.ts.map +1 -0
  179. package/dist/versioning/migrate.js +362 -0
  180. package/dist/versioning/migrate.js.map +1 -0
  181. package/dist/versioning/registry.d.ts +18 -0
  182. package/dist/versioning/registry.d.ts.map +1 -0
  183. package/dist/versioning/registry.js +63 -0
  184. package/dist/versioning/registry.js.map +1 -0
  185. package/package.json +52 -0
@@ -0,0 +1,470 @@
1
+ import { providerIdSchema } from "@madebywild/agent-harness-manifest";
2
+ import { CLI_ENTITY_TYPES } from "../types.js";
3
+ import { handleApply } from "./handlers/apply.js";
4
+ import { handleDoctor } from "./handlers/doctor.js";
5
+ import { handleAddMcp, handleAddPrompt, handleAddSkill, handleAddSubagent, handleRemoveEntity, } from "./handlers/entities.js";
6
+ import { handleInit } from "./handlers/init.js";
7
+ import { handleMigrate } from "./handlers/migrate.js";
8
+ import { handlePlan } from "./handlers/plan.js";
9
+ import { handleProviderDisable, handleProviderEnable } from "./handlers/provider.js";
10
+ import { handleRegistryAdd, handleRegistryDefaultSet, handleRegistryDefaultShow, handleRegistryList, handleRegistryPull, handleRegistryRemove, handleRegistryValidate, } from "./handlers/registry.js";
11
+ import { handleValidate } from "./handlers/validate.js";
12
+ import { handleWatch } from "./handlers/watch.js";
13
+ function readStringArg(input, key, required = true) {
14
+ const value = input.args?.[key];
15
+ if (value === undefined) {
16
+ if (required) {
17
+ throw new Error(`Missing required argument: ${key}`);
18
+ }
19
+ return undefined;
20
+ }
21
+ return value;
22
+ }
23
+ function readStringOption(input, key) {
24
+ const value = input.options?.[key];
25
+ if (value === undefined) {
26
+ return undefined;
27
+ }
28
+ if (typeof value !== "string") {
29
+ throw new Error(`Option '${key}' must be a string`);
30
+ }
31
+ return value;
32
+ }
33
+ function readRequiredStringOption(input, key) {
34
+ const value = readStringOption(input, key);
35
+ if (value === undefined || value.trim().length === 0) {
36
+ throw new Error(`Missing required option: ${key}`);
37
+ }
38
+ return value;
39
+ }
40
+ function readBooleanOption(input, key, fallback = false) {
41
+ const value = input.options?.[key];
42
+ if (value === undefined) {
43
+ return fallback;
44
+ }
45
+ if (typeof value === "boolean") {
46
+ return value;
47
+ }
48
+ if (typeof value === "string") {
49
+ const normalized = value.trim().toLowerCase();
50
+ if (normalized === "true" || normalized === "1") {
51
+ return true;
52
+ }
53
+ if (normalized === "false" || normalized === "0") {
54
+ return false;
55
+ }
56
+ }
57
+ throw new Error(`Option '${key}' must be a boolean`);
58
+ }
59
+ function readNumberOption(input, key, fallback) {
60
+ const value = input.options?.[key];
61
+ if (value === undefined) {
62
+ return fallback;
63
+ }
64
+ if (typeof value === "number") {
65
+ return value;
66
+ }
67
+ if (typeof value === "string") {
68
+ const parsed = Number(value);
69
+ if (Number.isFinite(parsed)) {
70
+ return parsed;
71
+ }
72
+ }
73
+ throw new Error(`Option '${key}' must be a number`);
74
+ }
75
+ export const COMMAND_DEFINITIONS = [
76
+ {
77
+ id: "init",
78
+ path: ["init"],
79
+ description: "Initialize .harness structure and state files",
80
+ args: [],
81
+ options: [
82
+ {
83
+ name: "force",
84
+ description: "overwrite an existing .harness workspace",
85
+ takesValue: false,
86
+ defaultValue: false,
87
+ },
88
+ ],
89
+ mutatesWorkspace: true,
90
+ interactiveLabel: "Initialize workspace",
91
+ run: (input, context) => handleInit({ force: readBooleanOption(input, "force") }, context),
92
+ },
93
+ {
94
+ id: "provider.enable",
95
+ path: ["provider", "enable"],
96
+ description: "Enable a provider",
97
+ args: [{ name: "provider", required: true, description: `provider id (${providerIdSchema.options.join(", ")})` }],
98
+ options: [],
99
+ mutatesWorkspace: true,
100
+ interactiveLabel: "Enable provider",
101
+ run: (input, context) => handleProviderEnable({ provider: readStringArg(input, "provider") ?? "" }, context),
102
+ },
103
+ {
104
+ id: "provider.disable",
105
+ path: ["provider", "disable"],
106
+ description: "Disable a provider",
107
+ args: [{ name: "provider", required: true, description: `provider id (${providerIdSchema.options.join(", ")})` }],
108
+ options: [],
109
+ mutatesWorkspace: true,
110
+ interactiveLabel: "Disable provider",
111
+ run: (input, context) => handleProviderDisable({ provider: readStringArg(input, "provider") ?? "" }, context),
112
+ },
113
+ {
114
+ id: "registry.list",
115
+ path: ["registry", "list"],
116
+ description: "List configured registries",
117
+ args: [],
118
+ options: [],
119
+ mutatesWorkspace: false,
120
+ interactiveLabel: "List registries",
121
+ run: (_input, context) => handleRegistryList(context),
122
+ },
123
+ {
124
+ id: "registry.validate",
125
+ path: ["registry", "validate"],
126
+ description: "Validate a git registry repository structure and metadata",
127
+ args: [],
128
+ options: [
129
+ {
130
+ name: "path",
131
+ description: "registry repository path",
132
+ takesValue: true,
133
+ },
134
+ {
135
+ name: "root",
136
+ description: "registry root path inside repository",
137
+ takesValue: true,
138
+ defaultValue: ".",
139
+ },
140
+ ],
141
+ mutatesWorkspace: false,
142
+ interactiveLabel: "Validate registry repository",
143
+ run: (input, context) => handleRegistryValidate({
144
+ path: readStringOption(input, "path"),
145
+ root: readStringOption(input, "root"),
146
+ }, context),
147
+ },
148
+ {
149
+ id: "registry.add",
150
+ path: ["registry", "add"],
151
+ description: "Add a git registry",
152
+ args: [{ name: "name", required: true, description: "registry id" }],
153
+ options: [
154
+ {
155
+ name: "gitUrl",
156
+ description: "git remote url",
157
+ takesValue: true,
158
+ },
159
+ {
160
+ name: "ref",
161
+ description: "git branch/tag/ref to track",
162
+ takesValue: true,
163
+ defaultValue: "main",
164
+ },
165
+ {
166
+ name: "root",
167
+ description: "root path inside the git repository",
168
+ takesValue: true,
169
+ },
170
+ {
171
+ name: "tokenEnv",
172
+ description: "environment variable name containing registry token",
173
+ takesValue: true,
174
+ },
175
+ ],
176
+ mutatesWorkspace: true,
177
+ interactiveLabel: "Add registry",
178
+ run: (input, context) => handleRegistryAdd({
179
+ name: readStringArg(input, "name") ?? "",
180
+ gitUrl: readRequiredStringOption(input, "gitUrl"),
181
+ ref: readStringOption(input, "ref"),
182
+ root: readStringOption(input, "root"),
183
+ tokenEnv: readStringOption(input, "tokenEnv"),
184
+ }, context),
185
+ },
186
+ {
187
+ id: "registry.remove",
188
+ path: ["registry", "remove"],
189
+ description: "Remove a configured registry",
190
+ args: [{ name: "name", required: true, description: "registry id" }],
191
+ options: [],
192
+ mutatesWorkspace: true,
193
+ interactiveLabel: "Remove registry",
194
+ run: (input, context) => handleRegistryRemove({ name: readStringArg(input, "name") ?? "" }, context),
195
+ },
196
+ {
197
+ id: "registry.default.show",
198
+ path: ["registry", "default", "show"],
199
+ description: "Show the current default registry",
200
+ args: [],
201
+ options: [],
202
+ mutatesWorkspace: false,
203
+ interactiveLabel: "Show default registry",
204
+ run: (_input, context) => handleRegistryDefaultShow(context),
205
+ },
206
+ {
207
+ id: "registry.default.set",
208
+ path: ["registry", "default", "set"],
209
+ description: "Set the default registry",
210
+ args: [{ name: "name", required: true, description: "registry id" }],
211
+ options: [],
212
+ mutatesWorkspace: true,
213
+ interactiveLabel: "Set default registry",
214
+ run: (input, context) => handleRegistryDefaultSet({ name: readStringArg(input, "name") ?? "" }, context),
215
+ },
216
+ {
217
+ id: "registry.pull",
218
+ path: ["registry", "pull"],
219
+ description: "Refresh imported entities from configured registries",
220
+ args: [
221
+ {
222
+ name: "entityType",
223
+ required: false,
224
+ description: CLI_ENTITY_TYPES.join("|"),
225
+ },
226
+ {
227
+ name: "id",
228
+ required: false,
229
+ description: "entity id; use 'system' for prompt",
230
+ },
231
+ ],
232
+ options: [
233
+ {
234
+ name: "registry",
235
+ description: "limit pull to one registry",
236
+ takesValue: true,
237
+ },
238
+ {
239
+ name: "force",
240
+ description: "overwrite locally modified imported sources",
241
+ takesValue: false,
242
+ defaultValue: false,
243
+ },
244
+ ],
245
+ mutatesWorkspace: true,
246
+ interactiveLabel: "Pull registry entities",
247
+ run: (input, context) => handleRegistryPull({
248
+ entityType: readStringArg(input, "entityType", false),
249
+ id: readStringArg(input, "id", false),
250
+ registry: readStringOption(input, "registry"),
251
+ force: readBooleanOption(input, "force"),
252
+ }, context),
253
+ },
254
+ {
255
+ id: "add.prompt",
256
+ path: ["add", "prompt"],
257
+ description: "Create the v1 system prompt entity",
258
+ args: [],
259
+ options: [
260
+ {
261
+ name: "registry",
262
+ description: "registry id (defaults to configured default/local)",
263
+ takesValue: true,
264
+ },
265
+ ],
266
+ mutatesWorkspace: true,
267
+ interactiveLabel: "Add prompt",
268
+ run: (input, context) => handleAddPrompt({ registry: readStringOption(input, "registry") }, context),
269
+ },
270
+ {
271
+ id: "add.skill",
272
+ path: ["add", "skill"],
273
+ description: "Create a skill entity",
274
+ args: [{ name: "skillId", required: true, description: "skill id" }],
275
+ options: [
276
+ {
277
+ name: "registry",
278
+ description: "registry id (defaults to configured default/local)",
279
+ takesValue: true,
280
+ },
281
+ ],
282
+ mutatesWorkspace: true,
283
+ interactiveLabel: "Add skill",
284
+ run: (input, context) => handleAddSkill({
285
+ skillId: readStringArg(input, "skillId") ?? "",
286
+ registry: readStringOption(input, "registry"),
287
+ }, context),
288
+ },
289
+ {
290
+ id: "add.mcp",
291
+ path: ["add", "mcp"],
292
+ description: "Create an MCP config entity",
293
+ args: [{ name: "configId", required: true, description: "MCP config id" }],
294
+ options: [
295
+ {
296
+ name: "registry",
297
+ description: "registry id (defaults to configured default/local)",
298
+ takesValue: true,
299
+ },
300
+ ],
301
+ mutatesWorkspace: true,
302
+ interactiveLabel: "Add MCP config",
303
+ run: (input, context) => handleAddMcp({
304
+ configId: readStringArg(input, "configId") ?? "",
305
+ registry: readStringOption(input, "registry"),
306
+ }, context),
307
+ },
308
+ {
309
+ id: "add.subagent",
310
+ path: ["add", "subagent"],
311
+ description: "Create a subagent entity",
312
+ args: [{ name: "subagentId", required: true, description: "subagent id" }],
313
+ options: [
314
+ {
315
+ name: "registry",
316
+ description: "registry id (defaults to configured default/local)",
317
+ takesValue: true,
318
+ },
319
+ ],
320
+ mutatesWorkspace: true,
321
+ interactiveLabel: "Add subagent",
322
+ run: (input, context) => handleAddSubagent({
323
+ subagentId: readStringArg(input, "subagentId") ?? "",
324
+ registry: readStringOption(input, "registry"),
325
+ }, context),
326
+ },
327
+ {
328
+ id: "remove",
329
+ path: ["remove"],
330
+ description: "Remove an existing entity",
331
+ args: [
332
+ {
333
+ name: "entityType",
334
+ required: true,
335
+ description: CLI_ENTITY_TYPES.join("|"),
336
+ },
337
+ {
338
+ name: "id",
339
+ required: true,
340
+ description: "entity id; use 'system' for prompt",
341
+ },
342
+ ],
343
+ options: [
344
+ {
345
+ name: "deleteSource",
346
+ description: "keep scaffolded source files (advanced; may trigger ownership diagnostics)",
347
+ takesValue: false,
348
+ defaultValue: true,
349
+ },
350
+ ],
351
+ mutatesWorkspace: true,
352
+ interactiveLabel: "Remove entity",
353
+ run: (input, context) => handleRemoveEntity({
354
+ entityType: readStringArg(input, "entityType") ?? "",
355
+ id: readStringArg(input, "id") ?? "",
356
+ deleteSource: readBooleanOption(input, "deleteSource", true),
357
+ }, context),
358
+ },
359
+ {
360
+ id: "validate",
361
+ path: ["validate"],
362
+ description: "Validate manifest, ownership, and generation constraints",
363
+ args: [],
364
+ options: [],
365
+ mutatesWorkspace: false,
366
+ interactiveLabel: "Validate workspace",
367
+ run: (_input, context) => handleValidate(context),
368
+ },
369
+ {
370
+ id: "doctor",
371
+ path: ["doctor"],
372
+ description: "Inspect workspace schema version health",
373
+ args: [],
374
+ options: [],
375
+ mutatesWorkspace: false,
376
+ interactiveLabel: "Doctor",
377
+ run: (_input, context) => handleDoctor(context),
378
+ },
379
+ {
380
+ id: "migrate",
381
+ path: ["migrate"],
382
+ description: "Migrate workspace schema to latest supported version",
383
+ args: [],
384
+ options: [
385
+ {
386
+ name: "to",
387
+ description: "migration target (latest)",
388
+ takesValue: true,
389
+ defaultValue: "latest",
390
+ },
391
+ {
392
+ name: "dryRun",
393
+ description: "preview migration actions without writing files",
394
+ takesValue: false,
395
+ defaultValue: false,
396
+ },
397
+ ],
398
+ mutatesWorkspace: true,
399
+ interactiveLabel: "Migrate workspace",
400
+ run: (input, context) => handleMigrate({
401
+ to: readStringOption(input, "to") ?? "latest",
402
+ dryRun: readBooleanOption(input, "dryRun"),
403
+ }, context),
404
+ },
405
+ {
406
+ id: "plan",
407
+ path: ["plan"],
408
+ description: "Show planned create/update/delete operations",
409
+ args: [],
410
+ options: [],
411
+ mutatesWorkspace: false,
412
+ interactiveLabel: "Plan",
413
+ run: (_input, context) => handlePlan({ defaultInvocation: false }, context),
414
+ },
415
+ {
416
+ id: "apply",
417
+ path: ["apply"],
418
+ description: "Apply planned operations and write managed outputs",
419
+ args: [],
420
+ options: [],
421
+ mutatesWorkspace: true,
422
+ interactiveLabel: "Apply",
423
+ run: (_input, context) => handleApply(context),
424
+ },
425
+ {
426
+ id: "watch",
427
+ path: ["watch"],
428
+ description: "Watch source files and apply on changes",
429
+ args: [],
430
+ options: [
431
+ {
432
+ name: "debounceMs",
433
+ description: "debounce window in milliseconds",
434
+ takesValue: true,
435
+ defaultValue: 250,
436
+ },
437
+ ],
438
+ mutatesWorkspace: false,
439
+ interactiveLabel: "Watch",
440
+ run: (input, context) => handleWatch({
441
+ debounceMs: readNumberOption(input, "debounceMs", 250),
442
+ json: readBooleanOption(input, "json", false),
443
+ }, context),
444
+ },
445
+ {
446
+ id: "default.plan",
447
+ path: [],
448
+ description: "Default command behavior",
449
+ args: [],
450
+ options: [],
451
+ mutatesWorkspace: false,
452
+ run: (_input, context) => handlePlan({ defaultInvocation: true }, context),
453
+ },
454
+ ];
455
+ const COMMAND_BY_ID = new Map(COMMAND_DEFINITIONS.map((definition) => [definition.id, definition]));
456
+ export function getCommandDefinition(commandId) {
457
+ const definition = COMMAND_BY_ID.get(commandId);
458
+ if (!definition) {
459
+ throw new Error(`Unknown command '${commandId}'`);
460
+ }
461
+ return definition;
462
+ }
463
+ export function listCommandDefinitions() {
464
+ return COMMAND_DEFINITIONS;
465
+ }
466
+ export async function dispatch(commandId, input, context) {
467
+ const definition = getCommandDefinition(commandId);
468
+ return definition.run(input, context);
469
+ }
470
+ //# sourceMappingURL=command-registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command-registry.js","sourceRoot":"","sources":["../../src/cli/command-registry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,122 @@
1
+ import type { ApplyResult, CliEntityType, Diagnostic, DoctorResult, MigrationResult, PlanResult, ProviderId, RegistryListEntry, RegistryPullResult, RegistryValidationResult, RemoveResult, ValidationResult } from "../types.js";
2
+ export type CommandId = "init" | "provider.enable" | "provider.disable" | "registry.list" | "registry.validate" | "registry.add" | "registry.remove" | "registry.default.show" | "registry.default.set" | "registry.pull" | "add.prompt" | "add.skill" | "add.mcp" | "add.subagent" | "remove" | "validate" | "doctor" | "migrate" | "plan" | "apply" | "watch" | "default.plan";
3
+ export interface CommandInput {
4
+ command: CommandId;
5
+ args?: Record<string, string | undefined>;
6
+ options?: Record<string, boolean | number | string | undefined>;
7
+ }
8
+ export interface CliExecutionContext {
9
+ cwd?: string;
10
+ env?: NodeJS.ProcessEnv;
11
+ stdout?: (line: string) => void;
12
+ stderr?: (line: string) => void;
13
+ now?: () => number;
14
+ isTty?: boolean;
15
+ isCi?: boolean;
16
+ }
17
+ export interface CliResolvedContext {
18
+ cwd: string;
19
+ env: NodeJS.ProcessEnv;
20
+ stdout: (line: string) => void;
21
+ stderr: (line: string) => void;
22
+ now: () => number;
23
+ isTty: boolean;
24
+ isCi: boolean;
25
+ }
26
+ interface CommandOutputBase<TFamily extends string, TData> {
27
+ family: TFamily;
28
+ command: CommandId;
29
+ ok: boolean;
30
+ data: TData;
31
+ diagnostics: Diagnostic[];
32
+ exitCode: number;
33
+ runtime?: {
34
+ blockUntilExit: Promise<unknown>;
35
+ };
36
+ }
37
+ export interface InitOutput extends CommandOutputBase<"init", {
38
+ force: boolean;
39
+ message: string;
40
+ }> {
41
+ }
42
+ export interface ProviderOutput extends CommandOutputBase<"provider", {
43
+ action: "enable" | "disable";
44
+ provider: ProviderId;
45
+ message: string;
46
+ }> {
47
+ }
48
+ export type RegistryOutputData = {
49
+ operation: "list";
50
+ registries: RegistryListEntry[];
51
+ } | {
52
+ operation: "validate";
53
+ result: RegistryValidationResult;
54
+ } | {
55
+ operation: "add";
56
+ name: string;
57
+ message: string;
58
+ } | {
59
+ operation: "remove";
60
+ name: string;
61
+ message: string;
62
+ } | {
63
+ operation: "default.show";
64
+ registry: string;
65
+ } | {
66
+ operation: "default.set";
67
+ name: string;
68
+ message: string;
69
+ } | {
70
+ operation: "pull";
71
+ result: RegistryPullResult;
72
+ };
73
+ export interface RegistryOutput extends CommandOutputBase<"registry", RegistryOutputData> {
74
+ }
75
+ export interface EntityMutationOutput extends CommandOutputBase<"entity-mutation", {
76
+ operation: "add" | "remove";
77
+ entityType: CliEntityType;
78
+ id: string;
79
+ removed?: RemoveResult;
80
+ message: string;
81
+ }> {
82
+ }
83
+ export interface ValidationOutput extends CommandOutputBase<"validation", {
84
+ result: ValidationResult;
85
+ }> {
86
+ }
87
+ export interface PlanOutput extends CommandOutputBase<"plan", {
88
+ result: PlanResult;
89
+ defaultInvocation: boolean;
90
+ }> {
91
+ }
92
+ export interface ApplyOutput extends CommandOutputBase<"apply", {
93
+ result: ApplyResult;
94
+ }> {
95
+ }
96
+ export interface DoctorOutput extends CommandOutputBase<"doctor", {
97
+ result: DoctorResult;
98
+ }> {
99
+ }
100
+ export interface MigrateOutput extends CommandOutputBase<"migrate", {
101
+ result: MigrationResult;
102
+ }> {
103
+ }
104
+ export interface WatchOutput extends CommandOutputBase<"watch", {
105
+ debounceMs: number;
106
+ started: true;
107
+ }> {
108
+ }
109
+ export type CommandOutput = InitOutput | ProviderOutput | RegistryOutput | EntityMutationOutput | ValidationOutput | PlanOutput | ApplyOutput | DoctorOutput | MigrateOutput | WatchOutput;
110
+ export interface CliEnvelope<TData> {
111
+ schemaVersion: "1";
112
+ ok: boolean;
113
+ command: CommandId;
114
+ data: TData;
115
+ diagnostics: Diagnostic[];
116
+ meta: {
117
+ cwd: string;
118
+ durationMs: number;
119
+ };
120
+ }
121
+ export {};
122
+ //# sourceMappingURL=contracts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contracts.d.ts","sourceRoot":"","sources":["../../src/cli/contracts.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=contracts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contracts.js","sourceRoot":"","sources":["../../src/cli/contracts.ts"],"names":[],"mappings":""}
@@ -0,0 +1,3 @@
1
+ import type { ApplyOutput, CliResolvedContext } from "../contracts.js";
2
+ export declare function handleApply(context: CliResolvedContext): Promise<ApplyOutput>;
3
+ //# sourceMappingURL=apply.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"apply.d.ts","sourceRoot":"","sources":["../../../src/cli/handlers/apply.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAEvE,wBAAsB,WAAW,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,WAAW,CAAC,CAenF"}
@@ -0,0 +1,17 @@
1
+ import { HarnessEngine } from "../../engine.js";
2
+ export async function handleApply(context) {
3
+ const engine = new HarnessEngine(context.cwd);
4
+ const result = await engine.apply();
5
+ const hasErrors = result.diagnostics.some((diagnostic) => diagnostic.severity === "error");
6
+ return {
7
+ family: "apply",
8
+ command: "apply",
9
+ ok: !hasErrors,
10
+ diagnostics: result.diagnostics,
11
+ exitCode: hasErrors ? 1 : 0,
12
+ data: {
13
+ result,
14
+ },
15
+ };
16
+ }
17
+ //# sourceMappingURL=apply.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"apply.js","sourceRoot":"","sources":["../../../src/cli/handlers/apply.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAGhD,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,OAA2B;IAC3D,MAAM,MAAM,GAAG,IAAI,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC9C,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;IACpC,MAAM,SAAS,GAAG,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC;IAE3F,OAAO;QACL,MAAM,EAAE,OAAO;QACf,OAAO,EAAE,OAAO;QAChB,EAAE,EAAE,CAAC,SAAS;QACd,WAAW,EAAE,MAAM,CAAC,WAAW;QAC/B,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3B,IAAI,EAAE;YACJ,MAAM;SACP;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { CliResolvedContext, DoctorOutput } from "../contracts.js";
2
+ export declare function handleDoctor(context: CliResolvedContext): Promise<DoctorOutput>;
3
+ //# sourceMappingURL=doctor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../../src/cli/handlers/doctor.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAExE,wBAAsB,YAAY,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,YAAY,CAAC,CAcrF"}