@odla-ai/cli 0.48.4 → 0.49.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.
- package/README.md +6 -1
- package/dist/bin.cjs +40 -4
- package/dist/bin.cjs.map +1 -1
- package/dist/bin.js +1 -1
- package/dist/{chunk-BD5KIG63.js → chunk-7627AY5G.js} +41 -5
- package/dist/chunk-7627AY5G.js.map +1 -0
- package/dist/{cli-MXYYOFBR.js → cli-AT6M3FCR.js} +2 -2
- package/dist/index.cjs +40 -4
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +1 -1
- package/package.json +3 -3
- package/skills/odla/SKILL.md +7 -3
- package/dist/chunk-BD5KIG63.js.map +0 -1
- /package/dist/{cli-MXYYOFBR.js.map → cli-AT6M3FCR.js.map} +0 -0
package/dist/bin.js
CHANGED
|
@@ -172,7 +172,7 @@ function absoluteEntryPath(entryPath) {
|
|
|
172
172
|
|
|
173
173
|
// src/bin.ts
|
|
174
174
|
var argv = process.argv.slice(2);
|
|
175
|
-
requireCurrentCliForProvision(argv).then(() => requireCoherentProvisionRuntime(argv)).then(async () => (await import("./cli-
|
|
175
|
+
requireCurrentCliForProvision(argv).then(() => requireCoherentProvisionRuntime(argv)).then(async () => (await import("./cli-AT6M3FCR.js")).runCli()).catch((err) => {
|
|
176
176
|
console.error(redactSecrets(`odla-ai: ${err instanceof Error ? err.message : String(err)}`));
|
|
177
177
|
process.exitCode = exitCodeFor(err);
|
|
178
178
|
});
|
|
@@ -1246,6 +1246,7 @@ var COMMAND_SURFACE = {
|
|
|
1246
1246
|
pm: {
|
|
1247
1247
|
...PM_ENTITIES,
|
|
1248
1248
|
project: { list: {}, add: {}, create: {}, use: {}, set: {} },
|
|
1249
|
+
brief: {},
|
|
1249
1250
|
handoff: {},
|
|
1250
1251
|
next: {},
|
|
1251
1252
|
start: {},
|
|
@@ -11327,7 +11328,8 @@ Usage:
|
|
|
11327
11328
|
odla-ai pm bug list [--app <id>|--platform-wide] [--status <s>] [--severity <s>] [--goal <id>] [--assignee <id>] [--decision <id>] [--q <text>] [--limit <n>] [--offset <n>] [--json]
|
|
11328
11329
|
odla-ai pm goal add --app <id> --title <t> [--status <s>] [--proof <text>] [--target <pct>] [--mutation-id <id>] [--json]
|
|
11329
11330
|
odla-ai pm task add --app <id> --title <t> [--column <backlog|ready|doing|review|done>] [--goal <id>|--alignment-decision <id>] [--assignee <id>] [--description <text>|--body <text>] [--acceptance <text>] [--execution <human|agent|either>] [--due <epoch-ms>] [--mutation-id <id>] [--json]
|
|
11330
|
-
odla-ai pm
|
|
11331
|
+
odla-ai pm brief --app <id> [--project <id>] [--json] [bounded counts + actionable windows]
|
|
11332
|
+
odla-ai pm next --app <id> [--project <id>] [--brief|--verbose] [--json]
|
|
11331
11333
|
odla-ai pm start --app <id> [<task-id>] [--goal <id>] [--verbose] [--mutation-id <id>] [--json] [claims the top Ready task in one call]
|
|
11332
11334
|
odla-ai pm watch --app <id> [--cursor <cursor>] [--entity goal|task|decision|bug] [--action created|updated|deleted|comment.created|comment.updated] [--state <state>] [--by <principalId>] [--self <principalId>] [--interval <s>] [--timeout <s>] [--json|--jsonl]
|
|
11333
11335
|
odla-ai pm task ready <id> --expected-revision <n> [--goal <id>|--alignment-decision <id>] [--description <text>|--body <text>] [--acceptance <text>] [--execution <human|agent|either>] [--mutation-id <id>] [--json]
|
|
@@ -11349,7 +11351,7 @@ Usage:
|
|
|
11349
11351
|
odla-ai pm <goal|task|decision|bug> comments <id> [--json]
|
|
11350
11352
|
odla-ai pm <goal|task|decision|bug> history <id> [--limit <n>] [--json]
|
|
11351
11353
|
odla-ai pm <goal|task|decision|bug> rm <id>
|
|
11352
|
-
odla-ai pm handoff --app <id> [--project <id>] [--verbose] [--json]
|
|
11354
|
+
odla-ai pm handoff --app <id> [--project <id>] [--brief|--verbose] [--json]
|
|
11353
11355
|
odla-ai discuss groups [--json]
|
|
11354
11356
|
odla-ai discuss list [--app <id>] [--q <text>] [--state open|resolved|all] [--mentions] [--json]
|
|
11355
11357
|
odla-ai discuss read <topic> [--limit <n> --offset <n>] [--json]
|
|
@@ -12594,7 +12596,36 @@ function requireApp(ctx, parsed, command) {
|
|
|
12594
12596
|
if (!appId) throw new Error(`pm ${command} needs --app <appId>`);
|
|
12595
12597
|
return { appId, projectId: stringOpt(parsed.options.project) ?? ctx.projectId };
|
|
12596
12598
|
}
|
|
12599
|
+
function printBriefingSection(ctx, label, entity, section) {
|
|
12600
|
+
ctx.out.log(`${label}: ${section.shown} shown of ${section.total}`);
|
|
12601
|
+
if (!section.records.length) ctx.out.log("- (none)");
|
|
12602
|
+
else for (const record12 of section.records) printRecord(ctx, entity, record12);
|
|
12603
|
+
if (section.truncated) ctx.out.log(` expand: ${section.expand}`);
|
|
12604
|
+
}
|
|
12605
|
+
async function pmBrief(ctx, parsed) {
|
|
12606
|
+
const { appId, projectId } = requireApp(ctx, parsed, "brief");
|
|
12607
|
+
const q = new URLSearchParams({ app: appId });
|
|
12608
|
+
if (projectId) q.set("project", projectId);
|
|
12609
|
+
const result = await pmRequest(ctx, "GET", `/briefing?${q}`);
|
|
12610
|
+
emit2(ctx, result, () => {
|
|
12611
|
+
ctx.out.log(`${appId}: bounded PM briefing (read only)`);
|
|
12612
|
+
ctx.out.log(
|
|
12613
|
+
`counts: goals ${result.counts.openGoals}; Ready ${result.counts.ready}; active tasks ${result.counts.activeTasks}; Doing ${result.counts.doing}; yours ${result.counts.currentPrincipal}; bugs ${result.counts.openBugs}`
|
|
12614
|
+
);
|
|
12615
|
+
printBriefingSection(ctx, "your current work", "task", result.currentWork);
|
|
12616
|
+
printBriefingSection(ctx, "top Ready", "task", result.ready);
|
|
12617
|
+
printBriefingSection(ctx, "context goals", "goal", result.goals);
|
|
12618
|
+
printBriefingSection(ctx, "open bugs", "bug", result.openBugs);
|
|
12619
|
+
if (result.counts.doing > 0) {
|
|
12620
|
+
ctx.out.log(`doing expansion: ${result.expansions.doing}`);
|
|
12621
|
+
}
|
|
12622
|
+
ctx.out.log(`next: ${result.next}`);
|
|
12623
|
+
ctx.out.log(`monitor: ${result.monitor}`);
|
|
12624
|
+
ctx.out.log(`full handoff: ${result.expandFull}`);
|
|
12625
|
+
});
|
|
12626
|
+
}
|
|
12597
12627
|
async function pmNext(ctx, parsed) {
|
|
12628
|
+
if (parsed.options.brief === true) return pmBrief(ctx, parsed);
|
|
12598
12629
|
const { appId, projectId } = requireApp(ctx, parsed, "next");
|
|
12599
12630
|
const verbose = wantsVerbose(parsed);
|
|
12600
12631
|
const [goals, tasks] = await Promise.all([
|
|
@@ -12631,6 +12662,7 @@ async function pmNext(ctx, parsed) {
|
|
|
12631
12662
|
});
|
|
12632
12663
|
}
|
|
12633
12664
|
async function pmHandoff(ctx, parsed) {
|
|
12665
|
+
if (parsed.options.brief === true) return pmBrief(ctx, parsed);
|
|
12634
12666
|
const { appId, projectId } = requireApp(ctx, parsed, "handoff");
|
|
12635
12667
|
const verbose = wantsVerbose(parsed);
|
|
12636
12668
|
const [goals, tasks, bugs] = await Promise.all([
|
|
@@ -13236,9 +13268,13 @@ async function pmCommand(parsed, deps = {}) {
|
|
|
13236
13268
|
rejectWord(["pm", "project"], action3);
|
|
13237
13269
|
}
|
|
13238
13270
|
if (word === "next") {
|
|
13239
|
-
assertArgs(parsed, [...COMMON_OPTIONS, "app", "project", "verbose"], 2);
|
|
13271
|
+
assertArgs(parsed, [...COMMON_OPTIONS, "app", "project", "verbose", "brief"], 2);
|
|
13240
13272
|
return pmNext(await buildContext2(parsed, deps), parsed);
|
|
13241
13273
|
}
|
|
13274
|
+
if (word === "brief") {
|
|
13275
|
+
assertArgs(parsed, [...COMMON_OPTIONS, "app", "project"], 2);
|
|
13276
|
+
return pmBrief(await buildContext2(parsed, deps), parsed);
|
|
13277
|
+
}
|
|
13242
13278
|
if (word === "start") {
|
|
13243
13279
|
assertArgs(parsed, [...COMMON_OPTIONS, "app", "project", "goal", "verbose", "mutation-id"], 3);
|
|
13244
13280
|
return pmStart(await buildContext2(parsed, deps), parsed);
|
|
@@ -13260,7 +13296,7 @@ async function pmCommand(parsed, deps = {}) {
|
|
|
13260
13296
|
return pmWatch(await buildContext2(parsed, deps), parsed).then(() => void 0);
|
|
13261
13297
|
}
|
|
13262
13298
|
if (word === "handoff") {
|
|
13263
|
-
assertArgs(parsed, [...COMMON_OPTIONS, "app", "project", "verbose"], 2);
|
|
13299
|
+
assertArgs(parsed, [...COMMON_OPTIONS, "app", "project", "verbose", "brief"], 2);
|
|
13264
13300
|
return pmHandoff(await buildContext2(parsed, deps), parsed);
|
|
13265
13301
|
}
|
|
13266
13302
|
const entity = ALIASES[word];
|
|
@@ -16687,4 +16723,4 @@ export {
|
|
|
16687
16723
|
isTerminalHostedSecurityStatus,
|
|
16688
16724
|
runCli
|
|
16689
16725
|
};
|
|
16690
|
-
//# sourceMappingURL=chunk-
|
|
16726
|
+
//# sourceMappingURL=chunk-7627AY5G.js.map
|