orbitmap 0.4.2 → 0.4.4
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 +112 -18
- package/dist/adapters/cloud.d.ts +63 -21
- package/dist/adapters/cloud.js +108 -29
- package/dist/adapters/cloud.js.map +1 -1
- package/dist/adapters/factory.d.ts +3 -0
- package/dist/adapters/factory.js +8 -1
- package/dist/adapters/factory.js.map +1 -1
- package/dist/adapters/local/adapter.d.ts +17 -20
- package/dist/adapters/local/adapter.js +28 -21
- package/dist/adapters/local/adapter.js.map +1 -1
- package/dist/adapters/local/context.d.ts +1 -1
- package/dist/adapters/local/context.js +10 -2
- package/dist/adapters/local/context.js.map +1 -1
- package/dist/adapters/local/entities/planning.d.ts +5 -1
- package/dist/adapters/local/entities/planning.js +16 -3
- package/dist/adapters/local/entities/planning.js.map +1 -1
- package/dist/adapters/local/entities/tasks.d.ts +9 -1
- package/dist/adapters/local/entities/tasks.js +47 -5
- package/dist/adapters/local/entities/tasks.js.map +1 -1
- package/dist/adapters/local/entities/work-items.d.ts +14 -30
- package/dist/adapters/local/entities/work-items.js +63 -47
- package/dist/adapters/local/entities/work-items.js.map +1 -1
- package/dist/adapters/local/rules.d.ts +4 -4
- package/dist/adapters/local/rules.js +4 -19
- package/dist/adapters/local/rules.js.map +1 -1
- package/dist/adapters/local/shapes.d.ts +27 -7
- package/dist/adapters/local/shapes.js +41 -5
- package/dist/adapters/local/shapes.js.map +1 -1
- package/dist/adapters/local/store.d.ts +55 -6
- package/dist/adapters/local/store.js +122 -8
- package/dist/adapters/local/store.js.map +1 -1
- package/dist/adapters/local/types.d.ts +11 -2
- package/dist/adapters/local/types.js +9 -2
- package/dist/adapters/local/types.js.map +1 -1
- package/dist/adapters/types.d.ts +30 -20
- package/dist/agent-instructions.d.ts +43 -12
- package/dist/agent-instructions.js +1133 -170
- package/dist/agent-instructions.js.map +1 -1
- package/dist/area-directories.d.ts +75 -0
- package/dist/area-directories.js +162 -0
- package/dist/area-directories.js.map +1 -0
- package/dist/area-grouping.d.ts +55 -0
- package/dist/area-grouping.js +72 -0
- package/dist/area-grouping.js.map +1 -0
- package/dist/commands/areas.js +30 -2
- package/dist/commands/areas.js.map +1 -1
- package/dist/commands/assign.d.ts +1 -0
- package/dist/commands/assign.js +2 -0
- package/dist/commands/assign.js.map +1 -1
- package/dist/commands/context.d.ts +95 -0
- package/dist/commands/context.js +104 -2
- package/dist/commands/context.js.map +1 -1
- package/dist/commands/create.d.ts +1 -0
- package/dist/commands/create.js +19 -14
- package/dist/commands/create.js.map +1 -1
- package/dist/commands/dep.js +5 -8
- package/dist/commands/dep.js.map +1 -1
- package/dist/commands/doc-import.d.ts +1 -0
- package/dist/commands/doc-import.js +8 -26
- package/dist/commands/doc-import.js.map +1 -1
- package/dist/commands/doc-patch.js +16 -52
- package/dist/commands/doc-patch.js.map +1 -1
- package/dist/commands/doc-share.js +4 -0
- package/dist/commands/doc-share.js.map +1 -1
- package/dist/commands/doc-update.js +4 -8
- package/dist/commands/doc-update.js.map +1 -1
- package/dist/commands/doc.js +7 -12
- package/dist/commands/doc.js.map +1 -1
- package/dist/commands/docs-cache.js +23 -10
- package/dist/commands/docs-cache.js.map +1 -1
- package/dist/commands/docs.js +29 -10
- package/dist/commands/docs.js.map +1 -1
- package/dist/commands/get.js +8 -10
- package/dist/commands/get.js.map +1 -1
- package/dist/commands/ideas.d.ts +3 -1
- package/dist/commands/ideas.js +26 -49
- package/dist/commands/ideas.js.map +1 -1
- package/dist/commands/init.d.ts +24 -1
- package/dist/commands/init.js +0 -0
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/intent.d.ts +16 -0
- package/dist/commands/intent.js +61 -18
- package/dist/commands/intent.js.map +1 -1
- package/dist/commands/issues.d.ts +3 -1
- package/dist/commands/issues.js +47 -72
- package/dist/commands/issues.js.map +1 -1
- package/dist/commands/log.d.ts +14 -2
- package/dist/commands/log.js +35 -20
- package/dist/commands/log.js.map +1 -1
- package/dist/commands/mission.d.ts +8 -0
- package/dist/commands/mission.js +58 -18
- package/dist/commands/mission.js.map +1 -1
- package/dist/commands/orbit.d.ts +7 -1
- package/dist/commands/orbit.js +13 -24
- package/dist/commands/orbit.js.map +1 -1
- package/dist/commands/setup-agent.d.ts +97 -4
- package/dist/commands/setup-agent.js +273 -40
- package/dist/commands/setup-agent.js.map +1 -1
- package/dist/commands/setup-mcp.d.ts +2 -0
- package/dist/commands/setup-mcp.js +17 -40
- package/dist/commands/setup-mcp.js.map +1 -1
- package/dist/commands/start.d.ts +43 -0
- package/dist/commands/start.js +158 -3
- package/dist/commands/start.js.map +1 -1
- package/dist/commands/status.d.ts +1 -0
- package/dist/commands/status.js +5 -15
- package/dist/commands/status.js.map +1 -1
- package/dist/commands/subtask.d.ts +1 -0
- package/dist/commands/subtask.js +9 -2
- package/dist/commands/subtask.js.map +1 -1
- package/dist/commands/task-edit-content.js +4 -8
- package/dist/commands/task-edit-content.js.map +1 -1
- package/dist/commands/task.d.ts +7 -0
- package/dist/commands/task.js +5 -2
- package/dist/commands/task.js.map +1 -1
- package/dist/commands/tasks.d.ts +35 -0
- package/dist/commands/tasks.js +45 -9
- package/dist/commands/tasks.js.map +1 -1
- package/dist/commands/vibes.d.ts +3 -1
- package/dist/commands/vibes.js +41 -31
- package/dist/commands/vibes.js.map +1 -1
- package/dist/config.d.ts +11 -0
- package/dist/config.js +14 -1
- package/dist/config.js.map +1 -1
- package/dist/doc-cache.d.ts +74 -5
- package/dist/doc-cache.js +106 -22
- package/dist/doc-cache.js.map +1 -1
- package/dist/enums.d.ts +26 -0
- package/dist/enums.js +53 -0
- package/dist/enums.js.map +1 -0
- package/dist/errors.d.ts +67 -0
- package/dist/errors.js +82 -0
- package/dist/errors.js.map +1 -1
- package/dist/index.js +169 -60
- package/dist/index.js.map +1 -1
- package/dist/mcp-config.d.ts +42 -1
- package/dist/mcp-config.js +82 -2
- package/dist/mcp-config.js.map +1 -1
- package/dist/oauth.js +10 -10
- package/dist/output.d.ts +12 -0
- package/dist/output.js +39 -1
- package/dist/output.js.map +1 -1
- package/dist/paths.d.ts +40 -0
- package/dist/paths.js +174 -9
- package/dist/paths.js.map +1 -1
- package/dist/project-config.d.ts +42 -1
- package/dist/project-config.js +51 -0
- package/dist/project-config.js.map +1 -1
- package/dist/work-log.d.ts +104 -0
- package/dist/work-log.js +181 -0
- package/dist/work-log.js.map +1 -0
- package/dist/workspace-resolve.d.ts +179 -9
- package/dist/workspace-resolve.js +288 -20
- package/dist/workspace-resolve.js.map +1 -1
- package/dist/write-target.d.ts +56 -0
- package/dist/write-target.js +170 -0
- package/dist/write-target.js.map +1 -0
- package/package.json +3 -2
- package/dist/commands/create-project.d.ts +0 -6
- package/dist/commands/create-project.js +0 -28
- package/dist/commands/create-project.js.map +0 -1
- package/dist/commands/projects.d.ts +0 -3
- package/dist/commands/projects.js +0 -28
- package/dist/commands/projects.js.map +0 -1
package/dist/commands/start.js
CHANGED
|
@@ -1,11 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `orbitmap start [task]`.
|
|
3
|
+
*
|
|
4
|
+
* With a task reference nothing changed. Without one the CLI no longer takes "the next task
|
|
5
|
+
* in the queue" as the answer (TS-jt6q36): what an agent should work on comes from the
|
|
6
|
+
* *plan* — the active mission first, then the open intents, and only then raw priority
|
|
7
|
+
* order. One `GET /context` (which now carries `active_mission` and `open_intents`) plus the
|
|
8
|
+
* task listing is enough to decide, and the choice is always explained, because a pick an
|
|
9
|
+
* agent cannot justify is a pick it cannot argue with.
|
|
10
|
+
*/
|
|
1
11
|
import { createAdapter } from '../adapters/factory.js';
|
|
12
|
+
import { confirmWriteTarget } from '../write-target.js';
|
|
2
13
|
import { formatOutput, printError } from '../output.js';
|
|
3
14
|
import { printTaskDetail } from './task.js';
|
|
4
|
-
import { cleanupCache } from '../doc-cache.js';
|
|
15
|
+
import { cleanupCache, resolveDocCache } from '../doc-cache.js';
|
|
5
16
|
export async function startCommand(taskId, options) {
|
|
6
17
|
try {
|
|
18
|
+
await confirmWriteTarget('start task', options, 'existing');
|
|
7
19
|
const client = await createAdapter(options.area);
|
|
8
|
-
|
|
20
|
+
let selection;
|
|
21
|
+
if (!taskId) {
|
|
22
|
+
const outcome = await planWork(client);
|
|
23
|
+
if (outcome.kind === 'selected') {
|
|
24
|
+
selection = outcome.selection;
|
|
25
|
+
}
|
|
26
|
+
else if (!(await client.getDefaultArea())) {
|
|
27
|
+
// No area resolved anywhere: `POST /tasks/start` is area-scoped, so handing the pick
|
|
28
|
+
// back to the server here could only produce AREA_CONTEXT_REQUIRED — the very error
|
|
29
|
+
// this command was supposed to stop producing at the workspace root. Either we know
|
|
30
|
+
// why nothing is startable and say so, or the lookup itself failed and that error is
|
|
31
|
+
// the honest answer.
|
|
32
|
+
if (outcome.kind === 'lookup-failed')
|
|
33
|
+
throw outcome.error;
|
|
34
|
+
reportNothingToStart(outcome, options.json);
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
// With an area in hand the historical fallback still applies: let the server auto-pick
|
|
38
|
+
// (it knows about assignment and rule 8), including its own "nothing todo" message.
|
|
39
|
+
}
|
|
40
|
+
const response = (await client.startTask(taskId ?? selection?.task));
|
|
41
|
+
if (selection)
|
|
42
|
+
response.selection = selection;
|
|
9
43
|
if (options.json) {
|
|
10
44
|
console.log(formatOutput(response, true));
|
|
11
45
|
return;
|
|
@@ -14,6 +48,8 @@ export async function startCommand(taskId, options) {
|
|
|
14
48
|
console.log(response.meta?.message ?? 'No todo tasks available.');
|
|
15
49
|
return;
|
|
16
50
|
}
|
|
51
|
+
if (selection)
|
|
52
|
+
console.log(`Why this task: ${selection.reason}\n`);
|
|
17
53
|
console.log('Task started!\n');
|
|
18
54
|
printTaskDetail({ data: response.data });
|
|
19
55
|
// Auto-cleanup cached docs silently
|
|
@@ -23,7 +59,7 @@ export async function startCommand(taskId, options) {
|
|
|
23
59
|
...(response.data.workspace_knowledge ?? []).map((d) => d.slug),
|
|
24
60
|
];
|
|
25
61
|
if (slugs.length > 0) {
|
|
26
|
-
cleanupCache(slugs);
|
|
62
|
+
cleanupCache(slugs, await resolveDocCache({ area: options.area }));
|
|
27
63
|
}
|
|
28
64
|
}
|
|
29
65
|
catch {
|
|
@@ -35,4 +71,123 @@ export async function startCommand(taskId, options) {
|
|
|
35
71
|
process.exitCode = 1;
|
|
36
72
|
}
|
|
37
73
|
}
|
|
74
|
+
/**
|
|
75
|
+
* Decide what to work on, plan first: active mission → open intent → priority order.
|
|
76
|
+
*
|
|
77
|
+
* Reads only (`GET /tasks` + `GET /context`), so a caller may discard the answer. Both calls
|
|
78
|
+
* are made with whatever scope the adapter resolved — at the workspace root that is the
|
|
79
|
+
* workspace-wide listing, which is exactly the pool this command should be choosing from.
|
|
80
|
+
*/
|
|
81
|
+
export async function planWork(client) {
|
|
82
|
+
let candidates;
|
|
83
|
+
let context;
|
|
84
|
+
let workspace = null;
|
|
85
|
+
try {
|
|
86
|
+
const [tasks, ctx] = await Promise.all([
|
|
87
|
+
client.getTasks({ status: 'todo' }),
|
|
88
|
+
client.getContext(),
|
|
89
|
+
]);
|
|
90
|
+
candidates = tasks.data ?? [];
|
|
91
|
+
context = ctx.data ?? {};
|
|
92
|
+
workspace = tasks.meta?.workspace?.slug ?? null;
|
|
93
|
+
}
|
|
94
|
+
catch (error) {
|
|
95
|
+
return { kind: 'lookup-failed', error };
|
|
96
|
+
}
|
|
97
|
+
// A task whose dependencies are unmet cannot be worked on — it would only get in front of
|
|
98
|
+
// one that can. Kept as a fallback so a fully blocked backlog still yields a choice.
|
|
99
|
+
const ready = candidates.filter((task) => (task.blocked_by ?? []).length === 0);
|
|
100
|
+
const pool = ready.length > 0 ? ready : candidates;
|
|
101
|
+
if (pool.length === 0) {
|
|
102
|
+
const areas = [
|
|
103
|
+
...new Set([
|
|
104
|
+
...(context.areas ?? []).map((area) => area.slug),
|
|
105
|
+
...candidates.map((task) => task.area?.slug).filter((slug) => !!slug),
|
|
106
|
+
]),
|
|
107
|
+
];
|
|
108
|
+
return { kind: 'nothing', workspace, areas, scope: workspace ? 'workspace' : 'area' };
|
|
109
|
+
}
|
|
110
|
+
const mission = context.active_mission ?? null;
|
|
111
|
+
if (mission) {
|
|
112
|
+
const match = pool.find((task) => matches(task.mission_id, mission.id, mission.display_number));
|
|
113
|
+
if (match) {
|
|
114
|
+
return selected(match, 'mission', {
|
|
115
|
+
mission: { id: mission.id, number: mission.display_number, name: mission.name },
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
for (const intent of context.open_intents ?? []) {
|
|
120
|
+
const number = intent.number ?? intent.display_number;
|
|
121
|
+
const match = pool.find((task) => matches(task.intent_id, intent.id, number));
|
|
122
|
+
if (match) {
|
|
123
|
+
return selected(match, 'intent', {
|
|
124
|
+
intent: { id: intent.id, number, name: intent.name },
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
// Nothing planned matches: the listing is already in the server's priority order, so its
|
|
129
|
+
// head *is* "the next task in the queue" — now said out loud rather than implied.
|
|
130
|
+
return selected(pool[0], 'priority', {});
|
|
131
|
+
}
|
|
132
|
+
function selected(task, basis, links) {
|
|
133
|
+
return { kind: 'selected', selection: describe(task, basis, links) };
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* "Nothing to start", said where the search actually happened.
|
|
137
|
+
*
|
|
138
|
+
* The old code printed the server's area-scoped "No todo tasks available", which at the
|
|
139
|
+
* workspace root named a scope the command had not even searched.
|
|
140
|
+
*/
|
|
141
|
+
function reportNothingToStart(outcome, jsonMode) {
|
|
142
|
+
const where = outcome.workspace ? `workspace \`${outcome.workspace}\`` : 'this workspace';
|
|
143
|
+
const areas = outcome.areas.length > 0
|
|
144
|
+
? ` Areas searched: ${outcome.areas.join(', ')}.`
|
|
145
|
+
: '';
|
|
146
|
+
const message = `No startable work in ${where}: no task with status \`todo\` is available to you ` +
|
|
147
|
+
`across its areas.${areas} Run \`orbitmap tasks\` to see everything, or name a task ` +
|
|
148
|
+
'explicitly with `orbitmap start <TS-…>`.';
|
|
149
|
+
if (jsonMode) {
|
|
150
|
+
console.log(formatOutput({
|
|
151
|
+
data: null,
|
|
152
|
+
meta: {
|
|
153
|
+
message,
|
|
154
|
+
scope: 'workspace',
|
|
155
|
+
workspace: outcome.workspace,
|
|
156
|
+
areas_searched: outcome.areas,
|
|
157
|
+
},
|
|
158
|
+
}, true));
|
|
159
|
+
return;
|
|
160
|
+
}
|
|
161
|
+
console.log(message);
|
|
162
|
+
}
|
|
163
|
+
function matches(value, ...accepted) {
|
|
164
|
+
if (!value)
|
|
165
|
+
return false;
|
|
166
|
+
return accepted.some((candidate) => candidate !== undefined && candidate === value);
|
|
167
|
+
}
|
|
168
|
+
function describe(task, basis, links) {
|
|
169
|
+
const ref = task.display_number ?? task.task_number;
|
|
170
|
+
const where = task.area ? ` [${task.area.slug}]` : '';
|
|
171
|
+
const label = `${ref}${where} "${task.title}"`;
|
|
172
|
+
const reason = basis === 'mission'
|
|
173
|
+
? `${label} — it belongs to the active mission ${describeLink(links.mission)}.`
|
|
174
|
+
: basis === 'intent'
|
|
175
|
+
? `${label} — it belongs to the open intent ${describeLink(links.intent)}; ` +
|
|
176
|
+
'no task of the active mission was available.'
|
|
177
|
+
: `${label} — no task of the active mission or of an open intent was available, ` +
|
|
178
|
+
`so the next one in priority order was taken (priority: ${task.priority ?? 'n/a'}).`;
|
|
179
|
+
return {
|
|
180
|
+
basis,
|
|
181
|
+
reason,
|
|
182
|
+
task: ref,
|
|
183
|
+
area: task.area?.slug ?? null,
|
|
184
|
+
mission: links.mission ?? null,
|
|
185
|
+
intent: links.intent ?? null,
|
|
186
|
+
};
|
|
187
|
+
}
|
|
188
|
+
function describeLink(link) {
|
|
189
|
+
if (!link)
|
|
190
|
+
return '(unknown)';
|
|
191
|
+
return link.number ? `${link.number} "${link.name}"` : `"${link.name}"`;
|
|
192
|
+
}
|
|
38
193
|
//# sourceMappingURL=start.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"start.js","sourceRoot":"","sources":["../../src/commands/start.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"start.js","sourceRoot":"","sources":["../../src/commands/start.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/status.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { createAdapter } from '../adapters/factory.js';
|
|
2
|
-
import {
|
|
2
|
+
import { confirmWriteTarget } from '../write-target.js';
|
|
3
|
+
import { formatOutput, printError, printSuccess, printValidationError } from '../output.js';
|
|
3
4
|
const VALID_STATUSES = [
|
|
4
5
|
'backlog',
|
|
5
6
|
'todo',
|
|
@@ -13,27 +14,16 @@ const VALID_DELIVERY_STATUSES = ['on_branch', 'merged', 'released'];
|
|
|
13
14
|
export async function statusCommand(taskId, status, options) {
|
|
14
15
|
if (!VALID_STATUSES.includes(status)) {
|
|
15
16
|
const msg = `Invalid status "${status}". Valid: ${VALID_STATUSES.join(', ')}`;
|
|
16
|
-
|
|
17
|
-
console.error(JSON.stringify({ error: { message: msg } }));
|
|
18
|
-
}
|
|
19
|
-
else {
|
|
20
|
-
console.error(`Error: ${msg}`);
|
|
21
|
-
}
|
|
22
|
-
process.exitCode = 1;
|
|
17
|
+
printValidationError(msg, options.json);
|
|
23
18
|
return;
|
|
24
19
|
}
|
|
25
20
|
if (options.delivery && !VALID_DELIVERY_STATUSES.includes(options.delivery)) {
|
|
26
21
|
const msg = `Invalid delivery status "${options.delivery}". Valid: ${VALID_DELIVERY_STATUSES.join(', ')}`;
|
|
27
|
-
|
|
28
|
-
console.error(JSON.stringify({ error: { message: msg } }));
|
|
29
|
-
}
|
|
30
|
-
else {
|
|
31
|
-
console.error(`Error: ${msg}`);
|
|
32
|
-
}
|
|
33
|
-
process.exitCode = 1;
|
|
22
|
+
printValidationError(msg, options.json);
|
|
34
23
|
return;
|
|
35
24
|
}
|
|
36
25
|
try {
|
|
26
|
+
await confirmWriteTarget('update task status', options);
|
|
37
27
|
const client = await createAdapter(options.area);
|
|
38
28
|
const response = (await client.updateTaskStatus(taskId, status, options.delivery, options.force));
|
|
39
29
|
if (options.json) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAE5F,MAAM,cAAc,GAAG;IACrB,SAAS;IACT,MAAM;IACN,aAAa;IACb,WAAW;IACX,gBAAgB;IAChB,MAAM;IACN,SAAS;CACV,CAAC;AAEF,MAAM,uBAAuB,GAAG,CAAC,WAAW,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;AAWpE,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,MAAc,EACd,MAAc,EACd,OAA4F;IAE5F,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QACrC,MAAM,GAAG,GAAG,mBAAmB,MAAM,aAAa,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAC9E,oBAAoB,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;QACxC,OAAO;IACT,CAAC;IAED,IAAI,OAAO,CAAC,QAAQ,IAAI,CAAC,uBAAuB,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC5E,MAAM,GAAG,GAAG,4BAA4B,OAAO,CAAC,QAAQ,aAAa,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAC1G,oBAAoB,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;QACxC,OAAO;IACT,CAAC;IAED,IAAI,CAAC;QACH,MAAM,kBAAkB,CAAC,oBAAoB,EAAE,OAAO,CAAC,CAAC;QACxD,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACjD,MAAM,QAAQ,GAAG,CAAC,MAAM,MAAM,CAAC,gBAAgB,CAC7C,MAAM,EACN,MAAM,EACN,OAAO,CAAC,QAAQ,EAChB,OAAO,CAAC,KAAK,CACd,CAAmB,CAAC;QAErB,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACjB,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC;YAC1C,OAAO;QACT,CAAC;QAED,IAAI,GAAG,GAAG,sBAAsB,QAAQ,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC;QACzD,IAAI,QAAQ,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;YAClC,GAAG,IAAI,cAAc,QAAQ,CAAC,IAAI,CAAC,eAAe,GAAG,CAAC;QACxD,CAAC;QACD,YAAY,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAC3B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,UAAU,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;QAChC,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;IACvB,CAAC;AACH,CAAC"}
|
package/dist/commands/subtask.js
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { createAdapter } from '../adapters/factory.js';
|
|
2
|
+
import { confirmWriteTarget } from '../write-target.js';
|
|
2
3
|
import { formatOutput, printError, printSuccess } from '../output.js';
|
|
3
4
|
export async function subtaskCommand(parentId, title, options) {
|
|
4
5
|
try {
|
|
6
|
+
await confirmWriteTarget('create subtask', options);
|
|
5
7
|
const client = await createAdapter(options.area);
|
|
6
8
|
const response = (await client.createSubtasks(parentId, [
|
|
7
9
|
{
|
|
@@ -15,8 +17,13 @@ export async function subtaskCommand(parentId, title, options) {
|
|
|
15
17
|
console.log(formatOutput(response, true));
|
|
16
18
|
return;
|
|
17
19
|
}
|
|
18
|
-
|
|
19
|
-
|
|
20
|
+
// Printed only the title and the status before, so the thing just created could not be
|
|
21
|
+
// addressed by any command (TS-adanc8). `created_subtasks` carries no `display_number`
|
|
22
|
+
// — neither provider-side nor in LocalAdapter — so this falls back to the uuid, which
|
|
23
|
+
// every task command accepts. Prefer the display number the moment it is served.
|
|
24
|
+
const sub = response.data.created_subtasks[0];
|
|
25
|
+
const ref = sub.display_number ?? (sub.task_number ? `TS-${sub.task_number}` : sub.id);
|
|
26
|
+
printSuccess(`Subtask created: ${sub.title} [${ref}] (${sub.status})`, false);
|
|
20
27
|
}
|
|
21
28
|
catch (error) {
|
|
22
29
|
printError(error, options.json);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subtask.js","sourceRoot":"","sources":["../../src/commands/subtask.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"subtask.js","sourceRoot":"","sources":["../../src/commands/subtask.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAkBtE,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,QAAgB,EAChB,KAAa,EACb,OAOC;IAED,IAAI,CAAC;QACH,MAAM,kBAAkB,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC;QACpD,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACjD,MAAM,QAAQ,GAAG,CAAC,MAAM,MAAM,CAAC,cAAc,CAAC,QAAQ,EAAE;YACtD;gBACE,KAAK;gBACL,WAAW,EAAE,OAAO,CAAC,IAAI;gBACzB,QAAQ,EAAE,OAAO,CAAC,QAAQ;gBAC1B,gBAAgB,EAAE,OAAO,CAAC,MAAM;aACjC;SACF,CAAC,CAAoB,CAAC;QAEvB,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACjB,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC;YAC1C,OAAO;QACT,CAAC;QAED,uFAAuF;QACvF,uFAAuF;QACvF,sFAAsF;QACtF,iFAAiF;QACjF,MAAM,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAE,CAAC;QAC/C,MAAM,GAAG,GAAG,GAAG,CAAC,cAAc,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACvF,YAAY,CAAC,oBAAoB,GAAG,CAAC,KAAK,KAAK,GAAG,MAAM,GAAG,CAAC,MAAM,GAAG,EAAE,KAAK,CAAC,CAAC;IAChF,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,UAAU,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;QAChC,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;IACvB,CAAC;AACH,CAAC"}
|
|
@@ -1,18 +1,14 @@
|
|
|
1
1
|
import { createAdapter } from '../adapters/factory.js';
|
|
2
|
-
import {
|
|
2
|
+
import { confirmWriteTarget } from '../write-target.js';
|
|
3
|
+
import { formatOutput, printError, printSuccess, printValidationError } from '../output.js';
|
|
3
4
|
export async function taskEditContentCommand(taskId, options) {
|
|
4
5
|
if (!options.title && !options.description && !options.agentInstructions) {
|
|
5
6
|
const msg = 'At least one of --title, --description, or --agent-instructions must be provided.';
|
|
6
|
-
|
|
7
|
-
console.error(JSON.stringify({ error: { message: msg } }));
|
|
8
|
-
}
|
|
9
|
-
else {
|
|
10
|
-
console.error(`Error: ${msg}`);
|
|
11
|
-
}
|
|
12
|
-
process.exitCode = 1;
|
|
7
|
+
printValidationError(msg, options.json);
|
|
13
8
|
return;
|
|
14
9
|
}
|
|
15
10
|
try {
|
|
11
|
+
await confirmWriteTarget('edit task content', options, 'existing');
|
|
16
12
|
const client = await createAdapter(options.area);
|
|
17
13
|
const body = {};
|
|
18
14
|
if (options.title)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"task-edit-content.js","sourceRoot":"","sources":["../../src/commands/task-edit-content.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"task-edit-content.js","sourceRoot":"","sources":["../../src/commands/task-edit-content.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAe5F,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,MAAc,EACd,OAMC;IAED,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE,CAAC;QACzE,MAAM,GAAG,GAAG,mFAAmF,CAAC;QAChG,oBAAoB,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;QACxC,OAAO;IACT,CAAC;IAED,IAAI,CAAC;QACH,MAAM,kBAAkB,CAAC,mBAAmB,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;QACnE,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAEjD,MAAM,IAAI,GAA0E,EAAE,CAAC;QACvF,IAAI,OAAO,CAAC,KAAK;YAAE,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;QAC9C,IAAI,OAAO,CAAC,WAAW;YAAE,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;QAChE,IAAI,OAAO,CAAC,iBAAiB;YAAE,IAAI,CAAC,kBAAkB,GAAG,OAAO,CAAC,iBAAiB,CAAC;QAEnF,MAAM,QAAQ,GAAG,CAAC,MAAM,MAAM,CAAC,eAAe,CAAC,MAAM,EAAE,IAAI,CAAC,CAAwB,CAAC;QAErF,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACjB,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC;YAC1C,OAAO;QACT,CAAC;QAED,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxF,YAAY,CAAC,yBAAyB,MAAM,IAAI,EAAE,KAAK,CAAC,CAAC;QAEzD,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;QAChC,IAAI,IAAI,EAAE,CAAC;YACT,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;YACtC,IAAI,IAAI,CAAC,WAAW;gBAAE,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;YACtE,IAAI,IAAI,CAAC,kBAAkB;gBAAE,OAAO,CAAC,GAAG,CAAC,uBAAuB,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC;QAC7F,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,UAAU,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;QAChC,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;IACvB,CAAC;AACH,CAAC"}
|
package/dist/commands/task.d.ts
CHANGED
|
@@ -48,6 +48,13 @@ interface TaskDetailResponse {
|
|
|
48
48
|
status: string;
|
|
49
49
|
priority: string;
|
|
50
50
|
sort_order: number;
|
|
51
|
+
/**
|
|
52
|
+
* The provider selects only id/title/status/priority/sort_order for subtasks, so
|
|
53
|
+
* these are absent today and the Number column falls back to the uuid — which every
|
|
54
|
+
* task command accepts. Optional so it upgrades itself once they are served.
|
|
55
|
+
*/
|
|
56
|
+
task_number?: string;
|
|
57
|
+
display_number?: string;
|
|
51
58
|
}>;
|
|
52
59
|
area: {
|
|
53
60
|
name: string;
|
package/dist/commands/task.js
CHANGED
|
@@ -37,8 +37,11 @@ export function printTaskDetail(response) {
|
|
|
37
37
|
}
|
|
38
38
|
if (subtasks.length > 0) {
|
|
39
39
|
console.log(`\nSubtasks (${subtasks.length}):`);
|
|
40
|
-
|
|
41
|
-
|
|
40
|
+
// Was `1..n`, an ordinal that no command accepts — a listed subtask could not be
|
|
41
|
+
// started, logged against or closed without going to `--json` for its id (TS-adanc8).
|
|
42
|
+
// A subtask IS a task, so its display number works everywhere `TS-` does.
|
|
43
|
+
console.log(formatTable(['Number', 'Title', 'Status', 'Priority'], subtasks.map((s) => [
|
|
44
|
+
s.display_number ?? (s.task_number ? `TS-${s.task_number}` : s.id),
|
|
42
45
|
s.title,
|
|
43
46
|
s.status,
|
|
44
47
|
s.priority,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"task.js","sourceRoot":"","sources":["../../src/commands/task.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"task.js","sourceRoot":"","sources":["../../src/commands/task.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/tasks.d.ts
CHANGED
|
@@ -1,3 +1,25 @@
|
|
|
1
|
+
/** The `area` block workspace-scoped rows carry (absent in the area-scoped listing). */
|
|
2
|
+
export interface TaskArea {
|
|
3
|
+
id: string;
|
|
4
|
+
slug: string;
|
|
5
|
+
name: string;
|
|
6
|
+
}
|
|
7
|
+
export interface TaskItem {
|
|
8
|
+
id: string;
|
|
9
|
+
title: string;
|
|
10
|
+
description: string | null;
|
|
11
|
+
status: string;
|
|
12
|
+
priority: string;
|
|
13
|
+
delivery_status: string | null;
|
|
14
|
+
branch_name: string | null;
|
|
15
|
+
sort_order: number;
|
|
16
|
+
estimated_effort: string | null;
|
|
17
|
+
created_at: string;
|
|
18
|
+
task_number: string;
|
|
19
|
+
display_number: string;
|
|
20
|
+
/** Workspace scope only — see {@link TaskArea}. */
|
|
21
|
+
area?: TaskArea | null;
|
|
22
|
+
}
|
|
1
23
|
export declare function tasksCommand(options: {
|
|
2
24
|
json: boolean;
|
|
3
25
|
area?: string;
|
|
@@ -5,3 +27,16 @@ export declare function tasksCommand(options: {
|
|
|
5
27
|
priority?: string;
|
|
6
28
|
orbit?: string;
|
|
7
29
|
}): Promise<void>;
|
|
30
|
+
export interface TaskAreaGroup {
|
|
31
|
+
label: string;
|
|
32
|
+
slug: string | null;
|
|
33
|
+
tasks: TaskItem[];
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Rows folded into one group per area, in arrival order; area-less rows land in one bucket.
|
|
37
|
+
*
|
|
38
|
+
* The fold itself now lives in `area-grouping.ts`, shared with the issue/idea/vibe/document
|
|
39
|
+
* listings that grew the same need (TS-adanc8). This keeps the task-shaped result (`tasks`,
|
|
40
|
+
* not `rows`) that callers and tests already use.
|
|
41
|
+
*/
|
|
42
|
+
export declare function groupTasksByArea(tasks: TaskItem[]): TaskAreaGroup[];
|
package/dist/commands/tasks.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { createAdapter } from '../adapters/factory.js';
|
|
2
2
|
import { formatOutput, printError, formatTable } from '../output.js';
|
|
3
|
+
import { groupByArea } from '../area-grouping.js';
|
|
3
4
|
export async function tasksCommand(options) {
|
|
4
5
|
try {
|
|
5
6
|
const client = await createAdapter(options.area);
|
|
@@ -8,6 +9,8 @@ export async function tasksCommand(options) {
|
|
|
8
9
|
priority: options.priority,
|
|
9
10
|
orbit: options.orbit,
|
|
10
11
|
}));
|
|
12
|
+
// Passed through verbatim, so the per-task `area` of the workspace-scoped listing
|
|
13
|
+
// survives into `--json` — agents group on it.
|
|
11
14
|
if (options.json) {
|
|
12
15
|
console.log(formatOutput(response, true));
|
|
13
16
|
return;
|
|
@@ -17,19 +20,52 @@ export async function tasksCommand(options) {
|
|
|
17
20
|
console.log('No tasks found.');
|
|
18
21
|
return;
|
|
19
22
|
}
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
23
|
+
const workspaceScope = response.meta.scope === 'workspace';
|
|
24
|
+
console.log(workspaceScope
|
|
25
|
+
? `Tasks (${response.meta.count}) — whole workspace${response.meta.workspace ? ` ${response.meta.workspace.slug}` : ''}, grouped by area:\n`
|
|
26
|
+
: `Tasks (${response.meta.count}):\n`);
|
|
27
|
+
if (!workspaceScope) {
|
|
28
|
+
console.log(renderTable(tasks));
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
// The server already orders by area, so grouping is a fold over the rows, not a sort —
|
|
32
|
+
// whatever ordering the API applies inside an area is preserved as-is.
|
|
33
|
+
const groups = groupTasksByArea(tasks);
|
|
34
|
+
groups.forEach((group, index) => {
|
|
35
|
+
if (index > 0)
|
|
36
|
+
console.log('');
|
|
37
|
+
console.log(`── ${group.label} (${group.tasks.length}) ──`);
|
|
38
|
+
console.log(renderTable(group.tasks));
|
|
39
|
+
});
|
|
40
|
+
console.log("\nNarrow this down with --area <slug>, or run from inside that area's directory.");
|
|
29
41
|
}
|
|
30
42
|
catch (error) {
|
|
31
43
|
printError(error, options.json);
|
|
32
44
|
process.exitCode = 1;
|
|
33
45
|
}
|
|
34
46
|
}
|
|
47
|
+
/**
|
|
48
|
+
* Rows folded into one group per area, in arrival order; area-less rows land in one bucket.
|
|
49
|
+
*
|
|
50
|
+
* The fold itself now lives in `area-grouping.ts`, shared with the issue/idea/vibe/document
|
|
51
|
+
* listings that grew the same need (TS-adanc8). This keeps the task-shaped result (`tasks`,
|
|
52
|
+
* not `rows`) that callers and tests already use.
|
|
53
|
+
*/
|
|
54
|
+
export function groupTasksByArea(tasks) {
|
|
55
|
+
return groupByArea(tasks).groups.map((group) => ({
|
|
56
|
+
label: group.label,
|
|
57
|
+
slug: group.slug,
|
|
58
|
+
tasks: group.rows,
|
|
59
|
+
}));
|
|
60
|
+
}
|
|
61
|
+
function renderTable(tasks) {
|
|
62
|
+
const hasDelivery = tasks.some((t) => t.delivery_status);
|
|
63
|
+
const headers = hasDelivery
|
|
64
|
+
? ['#', 'Title', 'Status', 'Delivery', 'Priority', 'Effort']
|
|
65
|
+
: ['#', 'Title', 'Status', 'Priority', 'Effort'];
|
|
66
|
+
const rows = tasks.map((t) => hasDelivery
|
|
67
|
+
? [t.display_number ?? t.task_number, t.title, t.status, t.delivery_status ?? '', t.priority, t.estimated_effort ?? '']
|
|
68
|
+
: [t.display_number ?? t.task_number, t.title, t.status, t.priority, t.estimated_effort ?? '']);
|
|
69
|
+
return formatTable(headers, rows);
|
|
70
|
+
}
|
|
35
71
|
//# sourceMappingURL=tasks.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tasks.js","sourceRoot":"","sources":["../../src/commands/tasks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"tasks.js","sourceRoot":"","sources":["../../src/commands/tasks.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/vibes.d.ts
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
export declare function vibeLogCommand(options: {
|
|
2
2
|
json: boolean;
|
|
3
3
|
area?: string;
|
|
4
|
-
|
|
4
|
+
yes?: boolean;
|
|
5
|
+
/** Positional content, or the deprecated `--content` alias — resolved in `src/index.ts`. */
|
|
6
|
+
content?: string;
|
|
5
7
|
type: string;
|
|
6
8
|
title?: string;
|
|
7
9
|
task?: string;
|