@pebblehouse/odin-cli 0.18.1 → 0.18.2
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/dist/index.js +8 -9
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -1225,9 +1225,9 @@ depsCmd.command("remove <slug> <bet-id>").description("Remove a blocked-by depen
|
|
|
1225
1225
|
|
|
1226
1226
|
// src/commands/bets.ts
|
|
1227
1227
|
var betsCmd = new Command14("bets").description("Manage bets");
|
|
1228
|
-
var STAGE_HELP = "pitch, shaping, ready, planning, building, review, qa, shipping, done, archived
|
|
1228
|
+
var STAGE_HELP = "pitch, shaping, ready, planning, building, review, qa, shipping, done, archived";
|
|
1229
1229
|
withListFlags(
|
|
1230
|
-
betsCmd.command("list <slug>").description("List bets for a pebble").option("--status <status>", `
|
|
1230
|
+
betsCmd.command("list <slug>").description("List bets for a pebble").option("--status <status>", `Stage (${STAGE_HELP})`)
|
|
1231
1231
|
).action(async (slug, opts) => {
|
|
1232
1232
|
const resolved = resolveListParams(opts);
|
|
1233
1233
|
if (resolved.fatal) {
|
|
@@ -1245,21 +1245,20 @@ betsCmd.command("get <slug> <id>").description("Get a bet by ID").action(async (
|
|
|
1245
1245
|
process.stdout.write(JSON.stringify(res) + "\n");
|
|
1246
1246
|
if (res.error) process.exit(1);
|
|
1247
1247
|
});
|
|
1248
|
-
betsCmd.command("create <slug> <title>").description("Create a bet").option("--source <source>", "Source agent", "claude-code").option("--content <content>", "Bet content").option("--file <path>", "Read content from file").option("--
|
|
1248
|
+
betsCmd.command("create <slug> <title>").description("Create a bet").option("--source <source>", "Source agent", "claude-code").option("--content <content>", "Bet content").option("--file <path>", "Read content from file").option("--priority <priority>", "Bet priority").option("--appetite <appetite>", "Bet appetite").option("--follow-up-of <key-or-uuid>", "Allocate a suffixed follow-up ticket in this ticket's family (e.g. ODIN-12 \u2192 ODIN-12A)").action(async (slug, title, opts) => {
|
|
1249
1249
|
const content = opts.file ? readFileSync10(opts.file, "utf-8") : opts.content ?? "";
|
|
1250
1250
|
const res = await apiRequest(`/pebbles/${slug}/bets`, {
|
|
1251
1251
|
method: "POST",
|
|
1252
|
-
body: { title, source: opts.source, content,
|
|
1252
|
+
body: { title, source: opts.source, content, priority: opts.priority, appetite: opts.appetite, follow_up_of: opts.followUpOf }
|
|
1253
1253
|
});
|
|
1254
1254
|
process.stdout.write(JSON.stringify(res) + "\n");
|
|
1255
1255
|
if (res.error) process.exit(1);
|
|
1256
1256
|
});
|
|
1257
|
-
betsCmd.command("update <slug> <id>").description("Update a bet").option("--title <title>", "New title").option("--content <content>", "New content").option("--file <path>", "Read content from file").option("--
|
|
1257
|
+
betsCmd.command("update <slug> <id>").description("Update a bet's title, content, priority or appetite (stage changes: odin bets transition)").option("--title <title>", "New title").option("--content <content>", "New content").option("--file <path>", "Read content from file").option("--priority <priority>", "New priority").option("--appetite <appetite>", "New appetite").action(async (slug, id, opts) => {
|
|
1258
1258
|
const body = {};
|
|
1259
1259
|
if (opts.title) body.title = opts.title;
|
|
1260
1260
|
if (opts.file) body.content = readFileSync10(opts.file, "utf-8");
|
|
1261
1261
|
else if (opts.content) body.content = opts.content;
|
|
1262
|
-
if (opts.status) body.status = opts.status;
|
|
1263
1262
|
if (opts.priority) body.priority = opts.priority;
|
|
1264
1263
|
if (opts.appetite) body.appetite = opts.appetite;
|
|
1265
1264
|
const res = await apiRequest(`/pebbles/${slug}/bets/${id}`, {
|
|
@@ -1398,11 +1397,11 @@ tasksCmd.command("update <slug> <id>").description("Update a task").option("--ti
|
|
|
1398
1397
|
process.stdout.write(JSON.stringify(res) + "\n");
|
|
1399
1398
|
if (res.error) process.exit(1);
|
|
1400
1399
|
});
|
|
1401
|
-
tasksCmd.command("promote <slug> <id>").description("Promote a task to a bet, keeping its ticket ID and history").option("--content <content>", "Shaped bet markdown").option("--file <path>", "Read bet markdown from file").option("--
|
|
1400
|
+
tasksCmd.command("promote <slug> <id>").description("Promote a task to a bet, keeping its ticket ID and history (the bet starts in pitch)").option("--content <content>", "Shaped bet markdown").option("--file <path>", "Read bet markdown from file").option("--priority <priority>", "Bet priority").action(async (slug, id, opts) => {
|
|
1402
1401
|
const content = opts.file ? readFileSync12(opts.file, "utf-8") : opts.content;
|
|
1403
1402
|
const res = await apiRequest(`/pebbles/${slug}/tasks/${id}/promote`, {
|
|
1404
1403
|
method: "POST",
|
|
1405
|
-
body: { content,
|
|
1404
|
+
body: { content, priority: opts.priority }
|
|
1406
1405
|
});
|
|
1407
1406
|
process.stdout.write(JSON.stringify(res) + "\n");
|
|
1408
1407
|
if (res.error) process.exit(1);
|
|
@@ -2074,7 +2073,7 @@ Re-run \`odin pebble new ${name}\` after acting.
|
|
|
2074
2073
|
const body = renderInitBetBody(slug, report);
|
|
2075
2074
|
const bet = await apiRequest(`/pebbles/${slug}/bets`, {
|
|
2076
2075
|
method: "POST",
|
|
2077
|
-
body: { title: `Initialize ${slug}`, source: "odin-cli", content: body
|
|
2076
|
+
body: { title: `Initialize ${slug}`, source: "odin-cli", content: body }
|
|
2078
2077
|
});
|
|
2079
2078
|
process.stdout.write(JSON.stringify(bet) + "\n");
|
|
2080
2079
|
if (opts.run && bet.data?.id) {
|