agentplane 0.2.19 → 0.2.22
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/assets/AGENTS.md +6 -4
- package/bin/agentplane.js +24 -0
- package/dist/backends/task-backend/load.d.ts +2 -0
- package/dist/backends/task-backend/load.d.ts.map +1 -1
- package/dist/backends/task-backend/load.js +38 -18
- package/dist/backends/task-backend/local-backend.d.ts.map +1 -1
- package/dist/backends/task-backend/local-backend.js +27 -7
- package/dist/cli/command-guide.d.ts.map +1 -1
- package/dist/cli/command-guide.js +12 -11
- package/dist/cli/run-cli/command-catalog.d.ts +1 -1
- package/dist/cli/run-cli/command-catalog.d.ts.map +1 -1
- package/dist/cli/run-cli/command-catalog.js +72 -13
- package/dist/cli/run-cli/commands/core.d.ts +11 -1
- package/dist/cli/run-cli/commands/core.d.ts.map +1 -1
- package/dist/cli/run-cli/commands/core.js +295 -8
- package/dist/cli/run-cli/commands/init/write-agents.d.ts.map +1 -1
- package/dist/cli/run-cli/commands/init/write-agents.js +33 -1
- package/dist/cli/run-cli/commands/init/write-config.d.ts.map +1 -1
- package/dist/cli/run-cli/commands/init/write-config.js +4 -0
- package/dist/cli/run-cli/commands/init/write-gitignore.d.ts.map +1 -1
- package/dist/cli/run-cli/commands/init/write-gitignore.js +3 -18
- package/dist/cli/run-cli/commands/init.d.ts +1 -0
- package/dist/cli/run-cli/commands/init.d.ts.map +1 -1
- package/dist/cli/run-cli/commands/init.js +96 -31
- package/dist/cli/run-cli.d.ts.map +1 -1
- package/dist/cli/run-cli.js +86 -17
- package/dist/cli/spec/docs-render.d.ts.map +1 -1
- package/dist/cli/spec/docs-render.js +13 -6
- package/dist/commands/backend/sync.command.d.ts +3 -2
- package/dist/commands/backend/sync.command.d.ts.map +1 -1
- package/dist/commands/backend/sync.command.js +13 -15
- package/dist/commands/commit.command.d.ts.map +1 -1
- package/dist/commands/commit.command.js +2 -0
- package/dist/commands/commit.spec.d.ts +2 -0
- package/dist/commands/commit.spec.d.ts.map +1 -1
- package/dist/commands/commit.spec.js +26 -0
- package/dist/commands/doctor.run.d.ts.map +1 -1
- package/dist/commands/doctor.run.js +15 -6
- package/dist/commands/finish.run.d.ts.map +1 -1
- package/dist/commands/finish.run.js +2 -0
- package/dist/commands/finish.spec.d.ts +2 -0
- package/dist/commands/finish.spec.d.ts.map +1 -1
- package/dist/commands/finish.spec.js +36 -0
- package/dist/commands/guard/impl/allow.d.ts.map +1 -1
- package/dist/commands/guard/impl/allow.js +33 -7
- package/dist/commands/guard/impl/commands.d.ts +2 -0
- package/dist/commands/guard/impl/commands.d.ts.map +1 -1
- package/dist/commands/guard/impl/commands.js +24 -4
- package/dist/commands/guard/impl/comment-commit.d.ts +1 -0
- package/dist/commands/guard/impl/comment-commit.d.ts.map +1 -1
- package/dist/commands/guard/impl/comment-commit.js +16 -24
- package/dist/commands/pr/pr.command.d.ts +1 -1
- package/dist/commands/pr/pr.command.d.ts.map +1 -1
- package/dist/commands/pr/pr.command.js +15 -15
- package/dist/commands/release/apply.command.d.ts.map +1 -1
- package/dist/commands/release/apply.command.js +51 -3
- package/dist/commands/release/plan.command.d.ts.map +1 -1
- package/dist/commands/release/plan.command.js +25 -1
- package/dist/commands/shared/task-backend.d.ts +3 -0
- package/dist/commands/shared/task-backend.d.ts.map +1 -1
- package/dist/commands/shared/task-backend.js +4 -1
- package/dist/commands/task/block.d.ts.map +1 -1
- package/dist/commands/task/block.js +16 -16
- package/dist/commands/task/close-duplicate.command.d.ts +14 -0
- package/dist/commands/task/close-duplicate.command.d.ts.map +1 -0
- package/dist/commands/task/close-duplicate.command.js +102 -0
- package/dist/commands/task/close-duplicate.d.ts +14 -0
- package/dist/commands/task/close-duplicate.d.ts.map +1 -0
- package/dist/commands/task/close-duplicate.js +90 -0
- package/dist/commands/task/close-noop.command.d.ts +14 -0
- package/dist/commands/task/close-noop.command.d.ts.map +1 -0
- package/dist/commands/task/close-noop.command.js +77 -0
- package/dist/commands/task/close-noop.d.ts +13 -0
- package/dist/commands/task/close-noop.d.ts.map +1 -0
- package/dist/commands/task/close-noop.js +77 -0
- package/dist/commands/task/finish.d.ts +2 -0
- package/dist/commands/task/finish.d.ts.map +1 -1
- package/dist/commands/task/finish.js +63 -14
- package/dist/commands/task/index.d.ts +3 -0
- package/dist/commands/task/index.d.ts.map +1 -1
- package/dist/commands/task/index.js +3 -0
- package/dist/commands/task/new.d.ts.map +1 -1
- package/dist/commands/task/new.js +34 -6
- package/dist/commands/task/new.spec.js +1 -1
- package/dist/commands/task/plan.d.ts.map +1 -1
- package/dist/commands/task/plan.js +16 -5
- package/dist/commands/task/ready.d.ts.map +1 -1
- package/dist/commands/task/ready.js +6 -8
- package/dist/commands/task/set-status.d.ts.map +1 -1
- package/dist/commands/task/set-status.js +19 -21
- package/dist/commands/task/shared.d.ts +35 -1
- package/dist/commands/task/shared.d.ts.map +1 -1
- package/dist/commands/task/shared.js +188 -0
- package/dist/commands/task/start-ready.command.d.ts +14 -0
- package/dist/commands/task/start-ready.command.d.ts.map +1 -0
- package/dist/commands/task/start-ready.command.js +77 -0
- package/dist/commands/task/start-ready.d.ts +13 -0
- package/dist/commands/task/start-ready.d.ts.map +1 -0
- package/dist/commands/task/start-ready.js +37 -0
- package/dist/commands/task/start.d.ts.map +1 -1
- package/dist/commands/task/start.js +20 -23
- package/dist/commands/task/update.command.d.ts +1 -0
- package/dist/commands/task/update.command.d.ts.map +1 -1
- package/dist/commands/task/update.command.js +8 -0
- package/dist/commands/task/update.d.ts +1 -0
- package/dist/commands/task/update.d.ts.map +1 -1
- package/dist/commands/task/update.js +19 -3
- package/dist/commands/upgrade.d.ts.map +1 -1
- package/dist/commands/upgrade.js +67 -19
- package/dist/shared/errors.d.ts +9 -1
- package/dist/shared/errors.d.ts.map +1 -1
- package/dist/shared/errors.js +3 -1
- package/dist/shared/runtime-artifacts.d.ts +3 -0
- package/dist/shared/runtime-artifacts.d.ts.map +1 -0
- package/dist/shared/runtime-artifacts.js +18 -0
- package/dist/usecases/context/resolve-context.d.ts +3 -0
- package/dist/usecases/context/resolve-context.d.ts.map +1 -1
- package/dist/usecases/context/resolve-context.js +6 -1
- package/package.json +2 -2
- package/dist/cli/parse/lifecycle.d.ts +0 -64
- package/dist/cli/parse/lifecycle.d.ts.map +0 -1
- package/dist/cli/parse/lifecycle.js +0 -285
|
@@ -18,6 +18,32 @@ import { ensureAgentsFiles } from "./init/write-agents.js";
|
|
|
18
18
|
import { ensureInitGitignore } from "./init/write-gitignore.js";
|
|
19
19
|
import { ensureInitRedmineEnvTemplate } from "./init/write-env.js";
|
|
20
20
|
import { renderInitSection, renderInitWelcome } from "./init/ui.js";
|
|
21
|
+
const setupProfilePresets = {
|
|
22
|
+
prod: {
|
|
23
|
+
mode: "prod",
|
|
24
|
+
description: "Production bootstrap: compact flow with default managed-file and approval settings.",
|
|
25
|
+
defaultHooks: false,
|
|
26
|
+
defaultStrictUnsafeConfirm: false,
|
|
27
|
+
},
|
|
28
|
+
"prod-strict": {
|
|
29
|
+
mode: "prod",
|
|
30
|
+
description: "Production bootstrap + strict defaults for safer installs (hooks on, strict unsafe confirmations).",
|
|
31
|
+
defaultHooks: true,
|
|
32
|
+
defaultStrictUnsafeConfirm: true,
|
|
33
|
+
},
|
|
34
|
+
dev: {
|
|
35
|
+
mode: "dev",
|
|
36
|
+
description: "Developer bootstrap: full questionnaire for every init aspect.",
|
|
37
|
+
defaultHooks: false,
|
|
38
|
+
defaultStrictUnsafeConfirm: false,
|
|
39
|
+
},
|
|
40
|
+
"dev-safe": {
|
|
41
|
+
mode: "dev",
|
|
42
|
+
description: "Developer bootstrap with explicit unsafe-action confirmation by default.",
|
|
43
|
+
defaultHooks: false,
|
|
44
|
+
defaultStrictUnsafeConfirm: true,
|
|
45
|
+
},
|
|
46
|
+
};
|
|
21
47
|
function parseBooleanValueForInit(flag, value) {
|
|
22
48
|
const normalized = value.trim().toLowerCase();
|
|
23
49
|
if (["1", "true", "yes", "y", "on"].includes(normalized))
|
|
@@ -45,6 +71,13 @@ export const initSpec = {
|
|
|
45
71
|
summary: "Initialize agentplane project files under .agentplane/.",
|
|
46
72
|
description: "Creates .agentplane/ config, backend stubs, and agent templates in the target directory. If the target directory is not a git repository, it initializes one and (by default) writes an initial install commit. Use --gitignore-agents to keep agent templates local (gitignored) and skip the install commit. In interactive mode it prompts for missing inputs; use --yes for non-interactive mode.",
|
|
47
73
|
options: [
|
|
74
|
+
{
|
|
75
|
+
kind: "string",
|
|
76
|
+
name: "setup-profile",
|
|
77
|
+
valueHint: "<prod|dev>",
|
|
78
|
+
choices: ["prod", "dev"],
|
|
79
|
+
description: "Interactive preset. prod is the default and asks only essential questions; dev asks the full setup questionnaire.",
|
|
80
|
+
},
|
|
48
81
|
{
|
|
49
82
|
kind: "string",
|
|
50
83
|
name: "ide",
|
|
@@ -167,6 +200,7 @@ export const initSpec = {
|
|
|
167
200
|
const requireVerifyRaw = raw.opts["require-verify-approval"];
|
|
168
201
|
const recipesRaw = raw.opts.recipes;
|
|
169
202
|
return {
|
|
203
|
+
setupProfile: raw.opts["setup-profile"],
|
|
170
204
|
ide: raw.opts.ide,
|
|
171
205
|
workflow: raw.opts.workflow,
|
|
172
206
|
backend: raw.opts.backend,
|
|
@@ -226,6 +260,8 @@ async function cmdInit(opts) {
|
|
|
226
260
|
let requireVerifyApproval = flags.requireVerifyApproval ?? defaults.requireVerifyApproval;
|
|
227
261
|
let executionProfile = flags.executionProfile ?? defaults.executionProfile;
|
|
228
262
|
let strictUnsafeConfirm = flags.strictUnsafeConfirm ?? defaults.strictUnsafeConfirm;
|
|
263
|
+
let setupProfile = flags.setupProfile ?? "prod";
|
|
264
|
+
let setupProfilePreset = flags.setupProfile ?? "prod";
|
|
229
265
|
const isInteractive = process.stdin.isTTY && !flags.yes;
|
|
230
266
|
if (!process.stdin.isTTY &&
|
|
231
267
|
!flags.yes &&
|
|
@@ -257,9 +293,26 @@ async function cmdInit(opts) {
|
|
|
257
293
|
return result;
|
|
258
294
|
};
|
|
259
295
|
process.stdout.write(renderInitWelcome());
|
|
260
|
-
|
|
296
|
+
const presetLines = Object.entries(setupProfilePresets).map(([id, preset]) => `- ${id}: ${preset.description}`);
|
|
297
|
+
process.stdout.write(renderInitSection("Setup Preset", "Choose a bootstrap preset. It controls what questions are shown and safe defaults used."));
|
|
298
|
+
process.stdout.write(`${presetLines.join("\n")}\n\n`);
|
|
299
|
+
if (flags.setupProfile) {
|
|
300
|
+
setupProfilePreset = flags.setupProfile;
|
|
301
|
+
}
|
|
302
|
+
else {
|
|
303
|
+
const selected = await askChoice("Setup preset", ["prod", "prod-strict", "dev", "dev-safe"], "prod");
|
|
304
|
+
setupProfilePreset = selected;
|
|
305
|
+
}
|
|
306
|
+
const selectedPreset = setupProfilePresets[setupProfilePreset];
|
|
307
|
+
setupProfile = selectedPreset.mode;
|
|
308
|
+
if (flags.hooks === undefined)
|
|
309
|
+
hooks = selectedPreset.defaultHooks;
|
|
310
|
+
if (flags.strictUnsafeConfirm === undefined) {
|
|
311
|
+
strictUnsafeConfirm = selectedPreset.defaultStrictUnsafeConfirm;
|
|
312
|
+
}
|
|
313
|
+
process.stdout.write(renderInitSection("Workflow", "Choose how this repository will be orchestrated: direct means one branch, branch_pr means PR-first tasks."));
|
|
261
314
|
ide = flags.ide ?? defaults.ide;
|
|
262
|
-
if (!flags.workflow) {
|
|
315
|
+
if (!flags.workflow && setupProfile === "dev") {
|
|
263
316
|
const choice = await askChoice("Workflow mode", ["direct", "branch_pr"], workflow);
|
|
264
317
|
workflow = choice === "branch_pr" ? "branch_pr" : "direct";
|
|
265
318
|
}
|
|
@@ -267,36 +320,48 @@ async function cmdInit(opts) {
|
|
|
267
320
|
const choice = await askChoice("Task backend", ["local", "redmine"], backend);
|
|
268
321
|
backend = choice === "redmine" ? "redmine" : "local";
|
|
269
322
|
}
|
|
270
|
-
if (
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
323
|
+
if (setupProfile === "dev") {
|
|
324
|
+
if (flags.hooks === undefined) {
|
|
325
|
+
hooks = await askYesNo("Install managed git hooks now?", hooks);
|
|
326
|
+
}
|
|
327
|
+
process.stdout.write(renderInitSection("Execution Profile", "Set default autonomy/effort for agents. You can change this later in config."));
|
|
328
|
+
if (!flags.executionProfile) {
|
|
329
|
+
executionProfile = (await askChoice("Execution profile", ["conservative", "balanced", "aggressive"], executionProfile));
|
|
330
|
+
}
|
|
331
|
+
if (flags.strictUnsafeConfirm === undefined) {
|
|
332
|
+
strictUnsafeConfirm = await askYesNo("Require strict explicit confirmation for extra unsafe actions?", strictUnsafeConfirm);
|
|
333
|
+
}
|
|
334
|
+
process.stdout.write(renderInitSection("Approvals", "Control whether plan/network/verification actions require explicit approval by default."));
|
|
335
|
+
if (flags.requirePlanApproval === undefined) {
|
|
336
|
+
requirePlanApproval = await askYesNo("Require plan approval before work starts?", requirePlanApproval);
|
|
337
|
+
}
|
|
338
|
+
if (flags.requireNetworkApproval === undefined) {
|
|
339
|
+
requireNetworkApproval = await askYesNo("Require explicit approval for network actions?", requireNetworkApproval);
|
|
340
|
+
}
|
|
341
|
+
if (flags.requireVerifyApproval === undefined) {
|
|
342
|
+
requireVerifyApproval = await askYesNo("Require explicit approval before recording verification?", requireVerifyApproval);
|
|
343
|
+
}
|
|
344
|
+
process.stdout.write(renderInitSection("Recipes", "Optional: install recipe packs now (comma-separated IDs) or choose none."));
|
|
345
|
+
if (!flags.recipes) {
|
|
346
|
+
process.stdout.write(`${renderBundledRecipesHint()}\n`);
|
|
347
|
+
const answer = await askInput("Install optional recipes (comma separated, or none): ");
|
|
348
|
+
recipes = answer
|
|
349
|
+
? answer
|
|
350
|
+
.split(",")
|
|
351
|
+
.map((item) => item.trim())
|
|
352
|
+
.filter(Boolean)
|
|
353
|
+
: [];
|
|
354
|
+
}
|
|
289
355
|
}
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
: [];
|
|
356
|
+
else {
|
|
357
|
+
hooks = flags.hooks ?? selectedPreset.defaultHooks;
|
|
358
|
+
recipes = flags.recipes ?? defaults.recipes;
|
|
359
|
+
requirePlanApproval = flags.requirePlanApproval ?? defaults.requirePlanApproval;
|
|
360
|
+
requireNetworkApproval = flags.requireNetworkApproval ?? defaults.requireNetworkApproval;
|
|
361
|
+
requireVerifyApproval = flags.requireVerifyApproval ?? defaults.requireVerifyApproval;
|
|
362
|
+
executionProfile = flags.executionProfile ?? defaults.executionProfile;
|
|
363
|
+
strictUnsafeConfirm = flags.strictUnsafeConfirm ?? selectedPreset.defaultStrictUnsafeConfirm;
|
|
364
|
+
process.stdout.write(renderInitSection("Defaults Applied", "Using compact prod defaults for hooks, approvals, execution profile, and recipes."));
|
|
300
365
|
}
|
|
301
366
|
}
|
|
302
367
|
if (flags.yes) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-cli.d.ts","sourceRoot":"","sources":["../../src/cli/run-cli.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"run-cli.d.ts","sourceRoot":"","sources":["../../src/cli/run-cli.ts"],"names":[],"mappings":"AAibA,wBAAsB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAiL5D"}
|
package/dist/cli/run-cli.js
CHANGED
|
@@ -134,9 +134,9 @@ function matchCommandCatalog(tokens) {
|
|
|
134
134
|
return best;
|
|
135
135
|
}
|
|
136
136
|
function writeError(err, jsonErrors) {
|
|
137
|
-
const
|
|
137
|
+
const guidance = resolveErrorGuidance(err);
|
|
138
138
|
if (jsonErrors) {
|
|
139
|
-
process.stdout.write(`${formatJsonError(err)}\n`);
|
|
139
|
+
process.stdout.write(`${formatJsonError(err, { hint: guidance.hint, nextAction: guidance.nextAction })}\n`);
|
|
140
140
|
}
|
|
141
141
|
else {
|
|
142
142
|
const header = `error [${err.code}]`;
|
|
@@ -146,8 +146,11 @@ function writeError(err, jsonErrors) {
|
|
|
146
146
|
else {
|
|
147
147
|
process.stderr.write(`${header}: ${err.message}\n`);
|
|
148
148
|
}
|
|
149
|
-
if (hint) {
|
|
150
|
-
process.stderr.write(`hint: ${hint}\n`);
|
|
149
|
+
if (guidance.hint) {
|
|
150
|
+
process.stderr.write(`hint: ${guidance.hint}\n`);
|
|
151
|
+
}
|
|
152
|
+
if (guidance.nextAction) {
|
|
153
|
+
process.stderr.write(`next_action: ${guidance.nextAction.command} (${guidance.nextAction.reason})\n`);
|
|
151
154
|
}
|
|
152
155
|
}
|
|
153
156
|
}
|
|
@@ -158,33 +161,92 @@ function resolveAgentplaneHome() {
|
|
|
158
161
|
return overridden;
|
|
159
162
|
return path.join(os.homedir(), ".agentplane");
|
|
160
163
|
}
|
|
161
|
-
function
|
|
164
|
+
function resolveErrorGuidance(err) {
|
|
162
165
|
const command = typeof err.context?.command === "string" ? err.context.command : undefined;
|
|
163
166
|
const usage = command ? `agentplane help ${command} --compact` : "agentplane help";
|
|
164
167
|
switch (err.code) {
|
|
165
168
|
case "E_USAGE": {
|
|
166
|
-
return
|
|
169
|
+
return {
|
|
170
|
+
hint: `See \`${usage}\` for usage.`,
|
|
171
|
+
nextAction: {
|
|
172
|
+
command: usage,
|
|
173
|
+
reason: "inspect required arguments and flags",
|
|
174
|
+
reasonCode: "usage_help",
|
|
175
|
+
},
|
|
176
|
+
};
|
|
167
177
|
}
|
|
168
178
|
case "E_GIT": {
|
|
169
179
|
if (command?.startsWith("branch")) {
|
|
170
|
-
return
|
|
180
|
+
return {
|
|
181
|
+
hint: "Check git repo/branch; run `git branch` or pass --root <path>.",
|
|
182
|
+
nextAction: {
|
|
183
|
+
command: "git branch",
|
|
184
|
+
reason: "inspect repository branch state",
|
|
185
|
+
reasonCode: "git_branch_state",
|
|
186
|
+
},
|
|
187
|
+
};
|
|
171
188
|
}
|
|
172
189
|
if (command === "guard commit" || command === "commit") {
|
|
173
|
-
return
|
|
190
|
+
return {
|
|
191
|
+
hint: "Check git status/index; stage changes and retry.",
|
|
192
|
+
nextAction: {
|
|
193
|
+
command: "git status --short",
|
|
194
|
+
reason: "inspect staged/unstaged changes before commit",
|
|
195
|
+
reasonCode: "git_index_state",
|
|
196
|
+
},
|
|
197
|
+
};
|
|
174
198
|
}
|
|
175
|
-
return
|
|
199
|
+
return {
|
|
200
|
+
hint: "Check git repo context; pass --root <path> if needed.",
|
|
201
|
+
nextAction: {
|
|
202
|
+
command: "git status --short --untracked-files=no",
|
|
203
|
+
reason: "confirm repository context and tracked changes",
|
|
204
|
+
reasonCode: "git_context",
|
|
205
|
+
},
|
|
206
|
+
};
|
|
176
207
|
}
|
|
177
208
|
case "E_NETWORK": {
|
|
178
|
-
return
|
|
209
|
+
return {
|
|
210
|
+
hint: "Check network access and credentials.",
|
|
211
|
+
nextAction: {
|
|
212
|
+
command: "agentplane preflight --json",
|
|
213
|
+
reason: "recheck approvals and network requirements",
|
|
214
|
+
reasonCode: "network_gate",
|
|
215
|
+
},
|
|
216
|
+
};
|
|
179
217
|
}
|
|
180
218
|
case "E_BACKEND": {
|
|
181
219
|
if (command?.includes("sync")) {
|
|
182
|
-
return
|
|
220
|
+
return {
|
|
221
|
+
hint: "Check backend config under .agentplane/backends and retry.",
|
|
222
|
+
nextAction: {
|
|
223
|
+
command: "agentplane config show",
|
|
224
|
+
reason: "verify backend config path and active settings",
|
|
225
|
+
reasonCode: "backend_sync_config",
|
|
226
|
+
},
|
|
227
|
+
};
|
|
183
228
|
}
|
|
184
|
-
return
|
|
229
|
+
return {
|
|
230
|
+
hint: "Check backend config under .agentplane/backends.",
|
|
231
|
+
nextAction: {
|
|
232
|
+
command: "agentplane config show",
|
|
233
|
+
reason: "inspect backend configuration",
|
|
234
|
+
reasonCode: "backend_config",
|
|
235
|
+
},
|
|
236
|
+
};
|
|
237
|
+
}
|
|
238
|
+
case "E_VALIDATION": {
|
|
239
|
+
return {
|
|
240
|
+
hint: "Fix invalid config/input shape and rerun.",
|
|
241
|
+
nextAction: {
|
|
242
|
+
command: "agentplane preflight --json",
|
|
243
|
+
reason: "pinpoint validation failure in one report",
|
|
244
|
+
reasonCode: "validation_preflight",
|
|
245
|
+
},
|
|
246
|
+
};
|
|
185
247
|
}
|
|
186
248
|
default: {
|
|
187
|
-
return
|
|
249
|
+
return {};
|
|
188
250
|
}
|
|
189
251
|
}
|
|
190
252
|
}
|
|
@@ -342,9 +404,6 @@ export async function runCli(argv) {
|
|
|
342
404
|
const resolved = matched?.entry.needsProject === false
|
|
343
405
|
? null
|
|
344
406
|
: await maybeResolveProject({ cwd, rootOverride: globals.root });
|
|
345
|
-
if (resolved) {
|
|
346
|
-
await loadDotEnv(resolved.gitRoot);
|
|
347
|
-
}
|
|
348
407
|
let projectPromise = resolved
|
|
349
408
|
? Promise.resolve(resolved)
|
|
350
409
|
: null;
|
|
@@ -361,6 +420,7 @@ export async function runCli(argv) {
|
|
|
361
420
|
const getLoadedConfig = async (commandForErrorContext) => {
|
|
362
421
|
configPromise ??= (async () => {
|
|
363
422
|
const project = await getResolvedProject(commandForErrorContext);
|
|
423
|
+
await loadDotEnv(project.gitRoot);
|
|
364
424
|
return await loadConfig(project.agentplaneDir);
|
|
365
425
|
})();
|
|
366
426
|
try {
|
|
@@ -395,7 +455,16 @@ export async function runCli(argv) {
|
|
|
395
455
|
});
|
|
396
456
|
let ctxPromise = null;
|
|
397
457
|
const getCtx = async (commandForErrorContext) => {
|
|
398
|
-
ctxPromise ??=
|
|
458
|
+
ctxPromise ??= (async () => {
|
|
459
|
+
const resolvedProject = await getResolvedProject(commandForErrorContext);
|
|
460
|
+
const loadedConfig = await getLoadedConfig(commandForErrorContext);
|
|
461
|
+
return await resolveContext({
|
|
462
|
+
cwd,
|
|
463
|
+
rootOverride: globals.root ?? null,
|
|
464
|
+
resolvedProject,
|
|
465
|
+
config: loadedConfig.config,
|
|
466
|
+
});
|
|
467
|
+
})();
|
|
399
468
|
try {
|
|
400
469
|
return await ctxPromise;
|
|
401
470
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"docs-render.d.ts","sourceRoot":"","sources":["../../../src/cli/spec/docs-render.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"docs-render.d.ts","sourceRoot":"","sources":["../../../src/cli/spec/docs-render.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAmCjD,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,SAAS,QAAQ,EAAE,GAAG,MAAM,CAsGnE"}
|
|
@@ -1,6 +1,13 @@
|
|
|
1
|
-
function
|
|
1
|
+
function escCode(text) {
|
|
2
2
|
return text.replaceAll("`", "\\`");
|
|
3
3
|
}
|
|
4
|
+
function escText(text) {
|
|
5
|
+
return text
|
|
6
|
+
.replaceAll("&", "&")
|
|
7
|
+
.replaceAll("<", "<")
|
|
8
|
+
.replaceAll(">", ">")
|
|
9
|
+
.replaceAll("`", "\\`");
|
|
10
|
+
}
|
|
4
11
|
function toAnchor(text) {
|
|
5
12
|
return text
|
|
6
13
|
.toLowerCase()
|
|
@@ -49,8 +56,8 @@ export function renderCliDocsMdx(specs) {
|
|
|
49
56
|
const groupHeader = ["", `## ${group}`];
|
|
50
57
|
const commandBlocks = specs.flatMap((s) => {
|
|
51
58
|
const summaryLines = s.description
|
|
52
|
-
? ["",
|
|
53
|
-
: ["",
|
|
59
|
+
? ["", escText(s.summary), "", escText(s.description)]
|
|
60
|
+
: ["", escText(s.summary)];
|
|
54
61
|
const usageLines = ["", "Usage:", "", "```text", ...(s.usage ?? []), "```"];
|
|
55
62
|
const visibleOpts = (s.options ?? []).filter((o) => !o.hidden);
|
|
56
63
|
const optionLines = visibleOpts.length === 0
|
|
@@ -73,11 +80,11 @@ export function renderCliDocsMdx(specs) {
|
|
|
73
80
|
o.deprecated ? `deprecated=${o.deprecated}` : null,
|
|
74
81
|
].filter((x) => x !== null);
|
|
75
82
|
const suffix = meta.length > 0 ? ` (${meta.join(", ")})` : "";
|
|
76
|
-
return `- \`${
|
|
83
|
+
return `- \`${escCode(head)}\`: ${escText(o.description)}${escText(suffix)}`;
|
|
77
84
|
}),
|
|
78
85
|
];
|
|
79
86
|
const notesLines = s.notes && s.notes.length > 0
|
|
80
|
-
? ["", "Notes:", "", ...s.notes.map((n) => `- ${
|
|
87
|
+
? ["", "Notes:", "", ...s.notes.map((n) => `- ${escText(n)}`)]
|
|
81
88
|
: [];
|
|
82
89
|
const examplesLines = s.examples && s.examples.length > 0
|
|
83
90
|
? [
|
|
@@ -85,7 +92,7 @@ export function renderCliDocsMdx(specs) {
|
|
|
85
92
|
"Examples:",
|
|
86
93
|
"",
|
|
87
94
|
...s.examples.flatMap((ex) => {
|
|
88
|
-
const why = ex.why ? [`- ${
|
|
95
|
+
const why = ex.why ? [`- ${escText(ex.why)}`] : [];
|
|
89
96
|
return ["```sh", ex.cmd, "```", ...why];
|
|
90
97
|
}),
|
|
91
98
|
]
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { CommandCtx,
|
|
1
|
+
import type { CommandCtx, CommandSpec } from "../../cli/spec/spec.js";
|
|
2
2
|
import type { CommandContext } from "../shared/task-backend.js";
|
|
3
3
|
import { type BackendSyncParsed } from "../backend.js";
|
|
4
4
|
type BackendRootParsed = {
|
|
@@ -6,7 +6,8 @@ type BackendRootParsed = {
|
|
|
6
6
|
};
|
|
7
7
|
export declare const backendSpec: CommandSpec<BackendRootParsed>;
|
|
8
8
|
export declare const backendSyncSpec: CommandSpec<BackendSyncParsed>;
|
|
9
|
-
|
|
9
|
+
declare function runBackendRootGroup(_ctx: CommandCtx, p: BackendRootParsed): Promise<number>;
|
|
10
|
+
export declare function makeRunBackendHandler(_getCtx: (cmd: string) => Promise<CommandContext>): typeof runBackendRootGroup;
|
|
10
11
|
export declare function makeRunBackendSyncHandler(getCtx: (cmd: string) => Promise<CommandContext>): (ctx: CommandCtx, p: BackendSyncParsed) => Promise<number>;
|
|
11
12
|
export {};
|
|
12
13
|
//# sourceMappingURL=sync.command.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync.command.d.ts","sourceRoot":"","sources":["../../../src/commands/backend/sync.command.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,
|
|
1
|
+
{"version":3,"file":"sync.command.d.ts","sourceRoot":"","sources":["../../../src/commands/backend/sync.command.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAGtE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAAwB,KAAK,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAE7E,KAAK,iBAAiB,GAAG;IAAE,GAAG,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC;AAE3C,eAAO,MAAM,WAAW,EAAE,WAAW,CAAC,iBAAiB,CAQtD,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,WAAW,CAAC,iBAAiB,CAuC1D,CAAC;AAEF,iBAAS,mBAAmB,CAAC,IAAI,EAAE,UAAU,EAAE,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC,CAUpF;AAED,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,cAAc,CAAC,8BAEtF;AAED,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,cAAc,CAAC,IAC1E,KAAK,UAAU,EAAE,GAAG,iBAAiB,KAAG,OAAO,CAAC,MAAM,CAAC,CAStE"}
|
|
@@ -50,21 +50,19 @@ export const backendSyncSpec = {
|
|
|
50
50
|
quiet: raw.opts.quiet === true,
|
|
51
51
|
}),
|
|
52
52
|
};
|
|
53
|
-
|
|
54
|
-
const
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
};
|
|
67
|
-
return handler;
|
|
53
|
+
function runBackendRootGroup(_ctx, p) {
|
|
54
|
+
const input = p.cmd.join(" ");
|
|
55
|
+
const suggestion = suggestOne(input, ["sync"]);
|
|
56
|
+
const suffix = suggestion ? ` Did you mean: ${suggestion}?` : "";
|
|
57
|
+
const msg = p.cmd.length === 0 ? "Missing subcommand." : `Unknown subcommand: ${p.cmd[0]}.`;
|
|
58
|
+
throw usageError({
|
|
59
|
+
spec: backendSyncSpec,
|
|
60
|
+
message: `${msg}${suffix}`,
|
|
61
|
+
context: { command: "backend sync" },
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
export function makeRunBackendHandler(_getCtx) {
|
|
65
|
+
return runBackendRootGroup;
|
|
68
66
|
}
|
|
69
67
|
export function makeRunBackendSyncHandler(getCtx) {
|
|
70
68
|
return async (ctx, p) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commit.command.d.ts","sourceRoot":"","sources":["../../src/commands/commit.command.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAI/D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,cAAc,CAAC,IACrE,KAAK,UAAU,EAAE,GAAG,YAAY,KAAG,OAAO,CAAC,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"commit.command.d.ts","sourceRoot":"","sources":["../../src/commands/commit.command.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAI/D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,cAAc,CAAC,IACrE,KAAK,UAAU,EAAE,GAAG,YAAY,KAAG,OAAO,CAAC,MAAM,CAAC,CAsBjE"}
|
|
@@ -13,6 +13,8 @@ export type CommitParsed = {
|
|
|
13
13
|
allowCI: boolean;
|
|
14
14
|
requireClean: boolean;
|
|
15
15
|
quiet: boolean;
|
|
16
|
+
closeUnstageOthers: boolean;
|
|
17
|
+
closeCheckOnly: boolean;
|
|
16
18
|
};
|
|
17
19
|
export declare const commitSpec: CommandSpec<CommitParsed>;
|
|
18
20
|
//# sourceMappingURL=commit.spec.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commit.spec.d.ts","sourceRoot":"","sources":["../../src/commands/commit.spec.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAGvD,MAAM,MAAM,YAAY,GAAG;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,OAAO,CAAC;IACf,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,EAAE,OAAO,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;IACnB,WAAW,EAAE,OAAO,CAAC;IACrB,WAAW,EAAE,OAAO,CAAC;IACrB,UAAU,EAAE,OAAO,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,EAAE,OAAO,CAAC;IACtB,KAAK,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"commit.spec.d.ts","sourceRoot":"","sources":["../../src/commands/commit.spec.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAGvD,MAAM,MAAM,YAAY,GAAG;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,OAAO,CAAC;IACf,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,EAAE,OAAO,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;IACnB,WAAW,EAAE,OAAO,CAAC;IACrB,WAAW,EAAE,OAAO,CAAC;IACrB,UAAU,EAAE,OAAO,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,EAAE,OAAO,CAAC;IACtB,KAAK,EAAE,OAAO,CAAC;IACf,kBAAkB,EAAE,OAAO,CAAC;IAC5B,cAAc,EAAE,OAAO,CAAC;CACzB,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,WAAW,CAAC,YAAY,CAmJhD,CAAC"}
|
|
@@ -18,6 +18,18 @@ export const commitSpec = {
|
|
|
18
18
|
default: false,
|
|
19
19
|
description: "Generate a deterministic close commit message from task snapshot + verification + recorded implementation commit; stages only the task README.",
|
|
20
20
|
},
|
|
21
|
+
{
|
|
22
|
+
kind: "boolean",
|
|
23
|
+
name: "unstage-others",
|
|
24
|
+
default: false,
|
|
25
|
+
description: "With --close: unstage any currently staged paths before staging the task README.",
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
kind: "boolean",
|
|
29
|
+
name: "check-only",
|
|
30
|
+
default: false,
|
|
31
|
+
description: "With --close: run preflight checks and print the planned close commit subject without creating a commit.",
|
|
32
|
+
},
|
|
21
33
|
{
|
|
22
34
|
kind: "string",
|
|
23
35
|
name: "allow",
|
|
@@ -92,6 +104,18 @@ export const commitSpec = {
|
|
|
92
104
|
message: "Use either --message or --close (not both).",
|
|
93
105
|
});
|
|
94
106
|
}
|
|
107
|
+
if (!close && raw.opts["unstage-others"] === true) {
|
|
108
|
+
throw usageError({
|
|
109
|
+
spec: commitSpec,
|
|
110
|
+
message: "--unstage-others requires --close.",
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
if (!close && raw.opts["check-only"] === true) {
|
|
114
|
+
throw usageError({
|
|
115
|
+
spec: commitSpec,
|
|
116
|
+
message: "--check-only requires --close.",
|
|
117
|
+
});
|
|
118
|
+
}
|
|
95
119
|
const allow = raw.opts.allow;
|
|
96
120
|
if (Array.isArray(allow) && allow.some((s) => typeof s === "string" && s.trim() === "")) {
|
|
97
121
|
throw usageError({ spec: commitSpec, message: "Invalid value for --allow: empty." });
|
|
@@ -115,5 +139,7 @@ export const commitSpec = {
|
|
|
115
139
|
allowCI: raw.opts["allow-ci"] === true,
|
|
116
140
|
requireClean: raw.opts["require-clean"] === true,
|
|
117
141
|
quiet: raw.opts.quiet === true,
|
|
142
|
+
closeUnstageOthers: raw.opts["unstage-others"] === true,
|
|
143
|
+
closeCheckOnly: raw.opts["check-only"] === true,
|
|
118
144
|
}),
|
|
119
145
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor.run.d.ts","sourceRoot":"","sources":["../../src/commands/doctor.run.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"doctor.run.d.ts","sourceRoot":"","sources":["../../src/commands/doctor.run.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAK1D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAsPrD,eAAO,MAAM,SAAS,EAAE,cAAc,CAAC,YAAY,CAwBlD,CAAC"}
|
|
@@ -2,6 +2,7 @@ import fs from "node:fs/promises";
|
|
|
2
2
|
import path from "node:path";
|
|
3
3
|
import { resolveProject } from "@agentplaneorg/core";
|
|
4
4
|
import { warnMessage, successMessage } from "../cli/output.js";
|
|
5
|
+
import { RUNTIME_GITIGNORE_LINES } from "../shared/runtime-artifacts.js";
|
|
5
6
|
import { execFileAsync, gitEnv } from "./shared/git.js";
|
|
6
7
|
import { loadCommandContext } from "./shared/task-backend.js";
|
|
7
8
|
async function listTsFiles(rootDir) {
|
|
@@ -132,13 +133,21 @@ async function safeFixGitignore(repoRoot) {
|
|
|
132
133
|
return { changed: false, note: "Skip: .gitignore not found." };
|
|
133
134
|
}
|
|
134
135
|
const lines = existing.split(/\r?\n/);
|
|
135
|
-
const
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
136
|
+
const existingSet = new Set(lines.map((line) => line.trimEnd()));
|
|
137
|
+
const missing = RUNTIME_GITIGNORE_LINES.filter((line) => !existingSet.has(line));
|
|
138
|
+
if (missing.length === 0) {
|
|
139
|
+
return { changed: false, note: "OK: .gitignore already contains agentplane runtime ignores." };
|
|
140
|
+
}
|
|
141
|
+
const nextLines = [...lines];
|
|
142
|
+
if (nextLines.length > 0 && nextLines.at(-1) !== "")
|
|
143
|
+
nextLines.push("");
|
|
144
|
+
nextLines.push(...missing, "");
|
|
145
|
+
const next = `${nextLines.join("\n")}`.replaceAll(/\n{2,}$/g, "\n");
|
|
140
146
|
await fs.writeFile(gitignorePath, next, "utf8");
|
|
141
|
-
return {
|
|
147
|
+
return {
|
|
148
|
+
changed: true,
|
|
149
|
+
note: `Fixed: added agentplane runtime ignores to .gitignore (${missing.length} lines).`,
|
|
150
|
+
};
|
|
142
151
|
}
|
|
143
152
|
async function safeFixTaskIndex(repoRoot) {
|
|
144
153
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"finish.run.d.ts","sourceRoot":"","sources":["../../src/commands/finish.run.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEtD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAG/D,OAAO,EAAc,KAAK,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEjE,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,cAAc,CAAC,IACrE,KAAK,UAAU,EAAE,GAAG,YAAY,KAAG,OAAO,CAAC,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"finish.run.d.ts","sourceRoot":"","sources":["../../src/commands/finish.run.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEtD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAG/D,OAAO,EAAc,KAAK,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEjE,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,cAAc,CAAC,IACrE,KAAK,UAAU,EAAE,GAAG,YAAY,KAAG,OAAO,CAAC,MAAM,CAAC,CAsCjE"}
|
|
@@ -35,6 +35,8 @@ export function makeRunFinishHandler(getCtx) {
|
|
|
35
35
|
statusCommitAutoAllow: p.statusCommitAutoAllow,
|
|
36
36
|
statusCommitRequireClean: p.statusCommitRequireClean,
|
|
37
37
|
confirmStatusCommit: p.confirmStatusCommit,
|
|
38
|
+
closeCommit: p.closeCommit,
|
|
39
|
+
closeUnstageOthers: p.closeUnstageOthers,
|
|
38
40
|
quiet: p.quiet,
|
|
39
41
|
});
|
|
40
42
|
};
|
|
@@ -21,6 +21,8 @@ export type FinishParsed = {
|
|
|
21
21
|
statusCommitAutoAllow: boolean;
|
|
22
22
|
statusCommitRequireClean: boolean;
|
|
23
23
|
confirmStatusCommit: boolean;
|
|
24
|
+
closeCommit: boolean;
|
|
25
|
+
closeUnstageOthers: boolean;
|
|
24
26
|
quiet: boolean;
|
|
25
27
|
};
|
|
26
28
|
export declare const finishSpec: CommandSpec<FinishParsed>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"finish.spec.d.ts","sourceRoot":"","sources":["../../src/commands/finish.spec.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAKvD,MAAM,MAAM,YAAY,GAAG;IACzB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,KAAK,GAAG,KAAK,GAAG,MAAM,CAAC;IAC9B,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,OAAO,CAAC;IACf,GAAG,EAAE,OAAO,CAAC;IACb,iBAAiB,EAAE,OAAO,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,eAAe,EAAE,OAAO,CAAC;IACzB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,kBAAkB,EAAE,OAAO,CAAC;IAC5B,YAAY,EAAE,OAAO,CAAC;IACtB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,qBAAqB,EAAE,OAAO,CAAC;IAC/B,wBAAwB,EAAE,OAAO,CAAC;IAClC,mBAAmB,EAAE,OAAO,CAAC;IAC7B,KAAK,EAAE,OAAO,CAAC;CAChB,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,WAAW,CAAC,YAAY,
|
|
1
|
+
{"version":3,"file":"finish.spec.d.ts","sourceRoot":"","sources":["../../src/commands/finish.spec.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAKvD,MAAM,MAAM,YAAY,GAAG;IACzB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,KAAK,GAAG,KAAK,GAAG,MAAM,CAAC;IAC9B,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,OAAO,CAAC;IACf,GAAG,EAAE,OAAO,CAAC;IACb,iBAAiB,EAAE,OAAO,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,eAAe,EAAE,OAAO,CAAC;IACzB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,kBAAkB,EAAE,OAAO,CAAC;IAC5B,YAAY,EAAE,OAAO,CAAC;IACtB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,qBAAqB,EAAE,OAAO,CAAC;IAC/B,wBAAwB,EAAE,OAAO,CAAC;IAClC,mBAAmB,EAAE,OAAO,CAAC;IAC7B,WAAW,EAAE,OAAO,CAAC;IACrB,kBAAkB,EAAE,OAAO,CAAC;IAC5B,KAAK,EAAE,OAAO,CAAC;CAChB,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,WAAW,CAAC,YAAY,CAqPhD,CAAC"}
|