@abe-ing/cli 0.4.0 → 0.7.0
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 +25 -1
- package/dist/api.js +59 -2
- package/dist/api.js.map +1 -1
- package/dist/chat.js +77 -0
- package/dist/chat.js.map +1 -0
- package/dist/commands/bodyInput.js +30 -0
- package/dist/commands/bodyInput.js.map +1 -0
- package/dist/commands/chat.js +49 -0
- package/dist/commands/chat.js.map +1 -0
- package/dist/commands/tasks.js +17 -4
- package/dist/commands/tasks.js.map +1 -1
- package/dist/commands/worksheets.js +30 -4
- package/dist/commands/worksheets.js.map +1 -1
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/output.js +42 -0
- package/dist/output.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -67,6 +67,7 @@ abe task create "Fix login race" \
|
|
|
67
67
|
# Update any field (send only what changes)
|
|
68
68
|
abe task update 91 --priority P0 --labels auth,p0
|
|
69
69
|
abe task update 91 --board other-board # move to another board
|
|
70
|
+
abe task update 91 --body-file spec.md # replace the task DOC from markdown (- = stdin); --body "..." inline
|
|
70
71
|
|
|
71
72
|
abe task move 91 --column in_review
|
|
72
73
|
abe task complete 91
|
|
@@ -75,9 +76,14 @@ abe task complete 91
|
|
|
75
76
|
abe task list --board engineering # your OPEN tasks on that board
|
|
76
77
|
abe task list --board engineering --all --include-done # full set (admin/full token)
|
|
77
78
|
abe task board --board engineering # full board state incl. done — best for reconciliation
|
|
79
|
+
abe task board --board engineering --with-bodies # …plus every card's doc as body_markdown, in ONE call
|
|
78
80
|
abe task show 91 # header + the task BODY (its worksheet doc, rendered as markdown)
|
|
79
81
|
```
|
|
80
82
|
|
|
83
|
+
**Writing the doc.** `--body <markdown>` / `--body-file <path>` (`-` reads stdin) **replace the whole task doc**: the markdown is converted server-side (headings, lists, code, tables, rules, bold/italic), the previous body is kept as a version in ABE, and the markdown source is mirrored into the task's `description`. `--description` on `update` means the same thing it does on `create` — it *is* the doc — so it also replaces the doc. You need edit permission on the doc itself (creator, admin, an edit share, or a workspace-editable doc) — exit 6 otherwise, and nothing else in the command is applied. Read the current body first (`abe task show`) if you mean to edit rather than rewrite. Saves are last-write-wins with the web editor: don't rewrite a doc someone has open.
|
|
84
|
+
|
|
85
|
+
Supported markdown: `#`–`######` headings, paragraphs, `**bold**` / `*italic*` / `` `code` `` / `[links](url)`, flat `-` and `1.` lists, `> quotes`, fenced code blocks, pipe tables, `---` rules. Nested lists flatten to one level and anything else lands as literal text — so on a read → edit → write round trip, check the result once for docs that use exotic formatting. A blank body is refused (exit 2 / 8) rather than emptying the doc.
|
|
86
|
+
|
|
81
87
|
`task show` prints the task's `ref` (`ABE-91`, the form to cite in PRs), its `worksheet` id, and the task's body — the linked worksheet doc rendered to markdown — under the header block. `--json` carries the body as `task.body_markdown` (plus `task.description`, the create-time text, and `task.worksheet_id`). Prefer `body_markdown`: `description` stops tracking the doc once it has been edited in the editor. The CLI requests the body with `?render=markdown`; it is `null` when the doc is hidden from your token (e.g. a token without the `tasks` scope, or a private doc you can't see).
|
|
82
88
|
|
|
83
89
|
Invalid `--priority/--type/--size/--status` fail fast (exit 2) before any network call. `--column` is **not** client-validated (columns are per-board) — an invalid column returns the server's `422` listing the valid set.
|
|
@@ -106,12 +112,30 @@ Worksheets are ABE's docs. Every task's body is a worksheet (`task.worksheet_id`
|
|
|
106
112
|
```bash
|
|
107
113
|
abe worksheet show 6325 # "# <title>" then the body as markdown
|
|
108
114
|
abe --json worksheet show 6325 | jq -r '.worksheet.bodyMarkdown'
|
|
115
|
+
abe worksheet update 6325 --body-file plan.md # replace the whole doc from markdown (- = stdin)
|
|
116
|
+
abe worksheet update 6325 --title "Q3 plan" --body "# Q3 plan\n\n..."
|
|
109
117
|
```
|
|
110
118
|
|
|
111
|
-
The **server** renders the markdown (`GET /worksheets/:id?render=markdown`), so the CLI never carries its own Tiptap converter. Task docs need a token with the `tasks` scope (or `full`) — exit 6 otherwise. Private docs are readable only by their creator, people they're shared with, and workspace admins, exactly as in the web app (exit 7 when not visible).
|
|
119
|
+
The **server** renders the markdown (`GET /worksheets/:id?render=markdown`), so the CLI never carries its own Tiptap converter. Task docs need a token with the `tasks` scope (or `full`) — exit 6 otherwise. Private docs are readable only by their creator, people they're shared with, and workspace admins, exactly as in the web app (exit 7 when not visible). `update` replaces the whole body (previous version kept) and/or retitles; same edit permission and last-write-wins caveat as `task update --body-file`.
|
|
112
120
|
|
|
113
121
|
`--json` emits a stable subset of the server's worksheet payload — `id`, `title`, `body` (Tiptap JSON), `bodyMarkdown`, `visibility`, `lastEditedAt`, `createdByName` — never the share token, owner email, or share/mention rosters the web editor receives.
|
|
114
122
|
|
|
123
|
+
## Chat
|
|
124
|
+
|
|
125
|
+
Read channel messages and their threads (read-only). Paste the link exactly as copied from ABE — `https://www.abe.ing/<workspace>?chat=channel&sessionId=<uuid>&message=<id>` — or pass the channel's session id:
|
|
126
|
+
|
|
127
|
+
```bash
|
|
128
|
+
abe chat show '<link>' # the message + every reply in its thread
|
|
129
|
+
abe chat show <session-uuid> --message 62630
|
|
130
|
+
abe chat messages '<link>' # the channel around that message (">>" marks it)
|
|
131
|
+
abe chat messages <session-uuid> --before 61608 # page back
|
|
132
|
+
abe --json chat show '<link>' | jq -r '.thread.replies[].content'
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
A link to a **reply** shows the whole thread, with the reply marked `>>`. Only **channel** links work (DM and ABE-chat links exit 2). The token's user must be a **member of the channel** — otherwise the server answers 404 (exit 7); join the channel in ABE or mint the token for a member.
|
|
136
|
+
|
|
137
|
+
`--json` emits a projection of each message — `id`, `parent_message_id`, `role`, `author`, `author_id`, `content`, `created_at`, `edited_at`, `deleted`, `reply_count`, `attachments[]` (`filename`, `content_type`, `url`) — never author emails, avatars, reactions, internal metadata, or the channel's member roster.
|
|
138
|
+
|
|
115
139
|
## Members
|
|
116
140
|
|
|
117
141
|
```bash
|
package/dist/api.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { CliError, EXIT } from './errors.js';
|
|
2
|
+
import { CHAT_NOT_FOUND, pickChannel, pickMessage } from './chat.js';
|
|
2
3
|
// The worksheet fields the CLI exposes. The server's payload is the web
|
|
3
4
|
// editor's — it also carries shareToken (a public-share secret),
|
|
4
5
|
// createdByEmail, and the share/mention/customer rosters — none of which
|
|
@@ -58,8 +59,11 @@ export class ApiClient {
|
|
|
58
59
|
const qs = q.toString();
|
|
59
60
|
return this.request('GET', `/tasks${qs ? `?${qs}` : ''}`);
|
|
60
61
|
}
|
|
61
|
-
|
|
62
|
-
|
|
62
|
+
// `withBodies` opts every card into its doc (`body_markdown`) in one call —
|
|
63
|
+
// the bulk read behind `abe task board --with-bodies`.
|
|
64
|
+
boardState(boardId, opts = {}) {
|
|
65
|
+
const render = opts.withBodies ? '&render=markdown' : '';
|
|
66
|
+
return this.request('GET', `/tasks/board?board_id=${boardId}${render}`);
|
|
63
67
|
}
|
|
64
68
|
// Opts in to the rendered body (`body_markdown`); the web app calls the
|
|
65
69
|
// same route without it and gets the lean projection.
|
|
@@ -74,6 +78,13 @@ export class ApiClient {
|
|
|
74
78
|
const { worksheet } = await this.request('GET', `/worksheets/${id}?render=markdown`);
|
|
75
79
|
return { worksheet: pickWorksheet(worksheet ?? {}) };
|
|
76
80
|
}
|
|
81
|
+
// Replace a doc's body with markdown (converted server-side) and/or retitle
|
|
82
|
+
// it. The endpoint reads a NESTED { worksheet: {...} } wrapper (unlike
|
|
83
|
+
// /tasks). Same edit permission as the web editor; last write wins.
|
|
84
|
+
async updateWorksheet(id, fields) {
|
|
85
|
+
const { worksheet } = await this.request('PUT', `/worksheets/${id}`, { worksheet: fields });
|
|
86
|
+
return { worksheet: pickWorksheet(worksheet ?? {}) };
|
|
87
|
+
}
|
|
77
88
|
createTask(body) {
|
|
78
89
|
return this.request('POST', '/tasks', body);
|
|
79
90
|
}
|
|
@@ -113,6 +124,52 @@ export class ApiClient {
|
|
|
113
124
|
listMembers() {
|
|
114
125
|
return this.request('GET', '/members');
|
|
115
126
|
}
|
|
127
|
+
// A channel message and its whole thread. A link can point at a REPLY;
|
|
128
|
+
// then we re-read from its parent so the reader always gets the full
|
|
129
|
+
// conversation (`requested_message_id` keeps what was asked for).
|
|
130
|
+
async getChatThread(sessionId, messageId) {
|
|
131
|
+
let res = await this.chatRequest(`/channels/${sessionId}/messages/${messageId}/replies`);
|
|
132
|
+
const parentId = res.parent?.parent_message_id;
|
|
133
|
+
if (typeof parentId === 'number') {
|
|
134
|
+
res = await this.chatRequest(`/channels/${sessionId}/messages/${parentId}/replies`);
|
|
135
|
+
}
|
|
136
|
+
return {
|
|
137
|
+
session_id: sessionId,
|
|
138
|
+
requested_message_id: messageId,
|
|
139
|
+
parent: pickMessage(res.parent ?? {}),
|
|
140
|
+
replies: (res.replies ?? []).map(pickMessage),
|
|
141
|
+
};
|
|
142
|
+
}
|
|
143
|
+
// A page of a channel's top-level messages: the latest page, a window
|
|
144
|
+
// centred on `around` (a permalink), or the page older than `before`.
|
|
145
|
+
async listChannelMessages(sessionId, opts = {}) {
|
|
146
|
+
const q = new URLSearchParams();
|
|
147
|
+
if (opts.around !== undefined)
|
|
148
|
+
q.set('around', String(opts.around));
|
|
149
|
+
if (opts.before !== undefined)
|
|
150
|
+
q.set('before', String(opts.before));
|
|
151
|
+
const qs = q.toString();
|
|
152
|
+
const res = await this.chatRequest(`/channels/${sessionId}${qs ? `?${qs}` : ''}`);
|
|
153
|
+
return {
|
|
154
|
+
channel: pickChannel(res.channel ?? {}),
|
|
155
|
+
messages: (res.messages ?? []).map(pickMessage),
|
|
156
|
+
has_more: !!res.has_more,
|
|
157
|
+
has_more_after: !!res.has_more_after,
|
|
158
|
+
...(res.window ? { window: { found: !!res.window.found, target_message_id: res.window.target_message_id ?? null } } : {}),
|
|
159
|
+
};
|
|
160
|
+
}
|
|
161
|
+
// The channel endpoints answer 404 for a channel the token's user is not
|
|
162
|
+
// in — say so, because that (not a bad id) is the usual cause.
|
|
163
|
+
async chatRequest(p) {
|
|
164
|
+
try {
|
|
165
|
+
return await this.request('GET', p);
|
|
166
|
+
}
|
|
167
|
+
catch (e) {
|
|
168
|
+
if (e instanceof CliError && e.exitCode === EXIT.NOT_FOUND)
|
|
169
|
+
throw new CliError(CHAT_NOT_FOUND, EXIT.NOT_FOUND);
|
|
170
|
+
throw e;
|
|
171
|
+
}
|
|
172
|
+
}
|
|
116
173
|
}
|
|
117
174
|
function safeJson(t) {
|
|
118
175
|
try {
|
package/dist/api.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"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"}
|
package/dist/chat.js
ADDED
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
// Channel chat reads: turn whatever an agent was handed (a web chat link or a
|
|
2
|
+
// bare channel session id) into the ids the API wants, and project the
|
|
3
|
+
// server's message payload down to what a reader needs.
|
|
4
|
+
//
|
|
5
|
+
// Links look like https://www.abe.ing/<slug>?chat=channel&sessionId=<uuid>&message=<id>
|
|
6
|
+
// (the slug segment is optional). Only channel links resolve to a REST read
|
|
7
|
+
// today — DM and ABE-conversation links name other chat surfaces.
|
|
8
|
+
const UUID = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
|
|
9
|
+
// Returns the parsed ref, or an error string the caller wraps in its own
|
|
10
|
+
// error type (the CLI exits with USAGE; the MCP server returns a tool error).
|
|
11
|
+
export function parseChatRef(input, messageOverride) {
|
|
12
|
+
const raw = input.trim();
|
|
13
|
+
let sessionId = null;
|
|
14
|
+
let messageParam = null;
|
|
15
|
+
if (UUID.test(raw)) {
|
|
16
|
+
sessionId = raw;
|
|
17
|
+
}
|
|
18
|
+
else {
|
|
19
|
+
let url;
|
|
20
|
+
try {
|
|
21
|
+
url = new URL(raw);
|
|
22
|
+
}
|
|
23
|
+
catch {
|
|
24
|
+
return { error: `Expected an ABE chat link or a channel session id, got "${input}".` };
|
|
25
|
+
}
|
|
26
|
+
const kind = url.searchParams.get('chat');
|
|
27
|
+
if (kind && kind !== 'channel') {
|
|
28
|
+
return { error: `Only channel chat links can be read for now — this link is a "${kind}" chat.` };
|
|
29
|
+
}
|
|
30
|
+
sessionId = url.searchParams.get('sessionId');
|
|
31
|
+
messageParam = url.searchParams.get('message');
|
|
32
|
+
if (!sessionId)
|
|
33
|
+
return { error: 'That link has no sessionId — copy the link from a channel message in ABE.' };
|
|
34
|
+
if (!UUID.test(sessionId))
|
|
35
|
+
return { error: `The link's sessionId "${sessionId}" is not a channel session id.` };
|
|
36
|
+
}
|
|
37
|
+
const rawMessage = messageOverride ?? messageParam;
|
|
38
|
+
if (rawMessage === null || rawMessage === undefined || rawMessage === '')
|
|
39
|
+
return { sessionId };
|
|
40
|
+
const messageId = Number(rawMessage);
|
|
41
|
+
if (!Number.isInteger(messageId) || messageId <= 0)
|
|
42
|
+
return { error: `Message id must be a positive integer, got "${rawMessage}".` };
|
|
43
|
+
return { sessionId, messageId };
|
|
44
|
+
}
|
|
45
|
+
// The server's payload is the web client's: it carries each author's email
|
|
46
|
+
// and avatar URL plus internal metadata and reactions. None of that belongs
|
|
47
|
+
// on an agent's stdout or in its transcript — keep the readable subset.
|
|
48
|
+
export function pickMessage(raw) {
|
|
49
|
+
const user = (raw.user ?? null);
|
|
50
|
+
const thread = (raw.thread ?? null);
|
|
51
|
+
const attachments = Array.isArray(raw.attachments) ? raw.attachments : [];
|
|
52
|
+
return {
|
|
53
|
+
id: raw.id,
|
|
54
|
+
parent_message_id: raw.parent_message_id ?? null,
|
|
55
|
+
role: String(raw.role ?? ''),
|
|
56
|
+
author: user?.name ?? null,
|
|
57
|
+
author_id: user?.id ?? null,
|
|
58
|
+
content: String(raw.content ?? ''),
|
|
59
|
+
created_at: String(raw.created_at ?? ''),
|
|
60
|
+
edited_at: raw.edited_at ?? null,
|
|
61
|
+
deleted: raw.deleted === true,
|
|
62
|
+
reply_count: Number(thread?.reply_count ?? 0),
|
|
63
|
+
attachments: attachments.map((a) => ({
|
|
64
|
+
filename: String(a.filename ?? ''),
|
|
65
|
+
content_type: a.content_type ?? null,
|
|
66
|
+
url: a.url ?? null,
|
|
67
|
+
})),
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
// The channel payload also carries the member roster (with emails); keep
|
|
71
|
+
// only what identifies the channel.
|
|
72
|
+
export function pickChannel(raw) {
|
|
73
|
+
return { session_id: String(raw.session_id ?? ''), name: raw.name ?? null };
|
|
74
|
+
}
|
|
75
|
+
export const CHAT_NOT_FOUND = "Channel or message not found — or this token's user is not a member of the channel. " +
|
|
76
|
+
'Channels are readable only by their members: join the channel in ABE (or mint the token for a member), then retry.';
|
|
77
|
+
//# sourceMappingURL=chat.js.map
|
package/dist/chat.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chat.js","sourceRoot":"","sources":["../src/chat.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,uEAAuE;AACvE,wDAAwD;AACxD,EAAE;AACF,wFAAwF;AACxF,4EAA4E;AAC5E,kEAAkE;AAgClE,MAAM,IAAI,GAAG,iEAAiE,CAAA;AAE9E,yEAAyE;AACzE,8EAA8E;AAC9E,MAAM,UAAU,YAAY,CAAC,KAAa,EAAE,eAAiC;IAC3E,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,EAAE,CAAA;IACxB,IAAI,SAAS,GAAkB,IAAI,CAAA;IACnC,IAAI,YAAY,GAAkB,IAAI,CAAA;IAEtC,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QACnB,SAAS,GAAG,GAAG,CAAA;IACjB,CAAC;SAAM,CAAC;QACN,IAAI,GAAQ,CAAA;QACZ,IAAI,CAAC;YACH,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAA;QACpB,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,KAAK,EAAE,2DAA2D,KAAK,IAAI,EAAE,CAAA;QACxF,CAAC;QACD,MAAM,IAAI,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;QACzC,IAAI,IAAI,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YAC/B,OAAO,EAAE,KAAK,EAAE,iEAAiE,IAAI,SAAS,EAAE,CAAA;QAClG,CAAC;QACD,SAAS,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,WAAW,CAAC,CAAA;QAC7C,YAAY,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;QAC9C,IAAI,CAAC,SAAS;YAAE,OAAO,EAAE,KAAK,EAAE,2EAA2E,EAAE,CAAA;QAC7G,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;YAAE,OAAO,EAAE,KAAK,EAAE,yBAAyB,SAAS,gCAAgC,EAAE,CAAA;IACjH,CAAC;IAED,MAAM,UAAU,GAAG,eAAe,IAAI,YAAY,CAAA;IAClD,IAAI,UAAU,KAAK,IAAI,IAAI,UAAU,KAAK,SAAS,IAAI,UAAU,KAAK,EAAE;QAAE,OAAO,EAAE,SAAS,EAAE,CAAA;IAC9F,MAAM,SAAS,GAAG,MAAM,CAAC,UAAU,CAAC,CAAA;IACpC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,SAAS,IAAI,CAAC;QAAE,OAAO,EAAE,KAAK,EAAE,+CAA+C,UAAU,IAAI,EAAE,CAAA;IACnI,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,CAAA;AACjC,CAAC;AAID,2EAA2E;AAC3E,4EAA4E;AAC5E,wEAAwE;AACxE,MAAM,UAAU,WAAW,CAAC,GAAQ;IAClC,MAAM,IAAI,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAA0C,CAAA;IACxE,MAAM,MAAM,GAAG,CAAC,GAAG,CAAC,MAAM,IAAI,IAAI,CAAoC,CAAA;IACtE,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,CAAE,GAAG,CAAC,WAAqB,CAAC,CAAC,CAAC,EAAE,CAAA;IACpF,OAAO;QACL,EAAE,EAAE,GAAG,CAAC,EAAY;QACpB,iBAAiB,EAAG,GAAG,CAAC,iBAAmC,IAAI,IAAI;QACnE,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC;QAC5B,MAAM,EAAE,IAAI,EAAE,IAAI,IAAI,IAAI;QAC1B,SAAS,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI;QAC3B,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC;QAClC,UAAU,EAAE,MAAM,CAAC,GAAG,CAAC,UAAU,IAAI,EAAE,CAAC;QACxC,SAAS,EAAG,GAAG,CAAC,SAA2B,IAAI,IAAI;QACnD,OAAO,EAAE,GAAG,CAAC,OAAO,KAAK,IAAI;QAC7B,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,IAAI,CAAC,CAAC;QAC7C,WAAW,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACnC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,IAAI,EAAE,CAAC;YAClC,YAAY,EAAG,CAAC,CAAC,YAA8B,IAAI,IAAI;YACvD,GAAG,EAAG,CAAC,CAAC,GAAqB,IAAI,IAAI;SACtC,CAAC,CAAC;KACJ,CAAA;AACH,CAAC;AAED,yEAAyE;AACzE,oCAAoC;AACpC,MAAM,UAAU,WAAW,CAAC,GAAQ;IAClC,OAAO,EAAE,UAAU,EAAE,MAAM,CAAC,GAAG,CAAC,UAAU,IAAI,EAAE,CAAC,EAAE,IAAI,EAAG,GAAG,CAAC,IAAsB,IAAI,IAAI,EAAE,CAAA;AAChG,CAAC;AAED,MAAM,CAAC,MAAM,cAAc,GACzB,sFAAsF;IACtF,oHAAoH,CAAA"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { readFileSync } from 'node:fs';
|
|
2
|
+
import { CliError, EXIT } from '../errors.js';
|
|
3
|
+
// Resolve the markdown for a doc write from `--body <markdown>` or
|
|
4
|
+
// `--body-file <path>` (`-` reads stdin, so `cat plan.md | abe task update 91
|
|
5
|
+
// --body-file -` works). Exactly one of the two; neither → undefined (no body
|
|
6
|
+
// write requested). Fails fast (exit 2) before any network call.
|
|
7
|
+
export function resolveBodyMarkdown(o) {
|
|
8
|
+
if (o.body !== undefined && o.bodyFile !== undefined) {
|
|
9
|
+
throw new CliError('Pass either --body or --body-file, not both.', EXIT.USAGE);
|
|
10
|
+
}
|
|
11
|
+
let body;
|
|
12
|
+
if (o.body !== undefined) {
|
|
13
|
+
body = o.body;
|
|
14
|
+
}
|
|
15
|
+
else if (o.bodyFile !== undefined) {
|
|
16
|
+
try {
|
|
17
|
+
body = readFileSync(o.bodyFile === '-' ? 0 : o.bodyFile, 'utf8');
|
|
18
|
+
}
|
|
19
|
+
catch (e) {
|
|
20
|
+
throw new CliError(`Could not read --body-file ${o.bodyFile}: ${e.message}`, EXIT.USAGE);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
// A blank body is a mistake (empty file, wrong redirect), not a request to
|
|
24
|
+
// empty the doc — the server refuses it too (422); fail here before any call.
|
|
25
|
+
if (body !== undefined && body.trim() === '') {
|
|
26
|
+
throw new CliError('The body is empty — a doc can\'t be emptied from the CLI; edit it in ABE.', EXIT.USAGE);
|
|
27
|
+
}
|
|
28
|
+
return body;
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=bodyInput.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bodyInput.js","sourceRoot":"","sources":["../../src/commands/bodyInput.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAEtC,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,cAAc,CAAA;AAO7C,mEAAmE;AACnE,8EAA8E;AAC9E,8EAA8E;AAC9E,iEAAiE;AACjE,MAAM,UAAU,mBAAmB,CAAC,CAAY;IAC9C,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;QACrD,MAAM,IAAI,QAAQ,CAAC,8CAA8C,EAAE,IAAI,CAAC,KAAK,CAAC,CAAA;IAChF,CAAC;IACD,IAAI,IAAwB,CAAA;IAC5B,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QACzB,IAAI,GAAG,CAAC,CAAC,IAAI,CAAA;IACf,CAAC;SAAM,IAAI,CAAC,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;QACpC,IAAI,CAAC;YACH,IAAI,GAAG,YAAY,CAAC,CAAC,CAAC,QAAQ,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;QAClE,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,MAAM,IAAI,QAAQ,CAAC,8BAA8B,CAAC,CAAC,QAAQ,KAAM,CAAW,CAAC,OAAO,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,CAAA;QACrG,CAAC;IACH,CAAC;IACD,2EAA2E;IAC3E,8EAA8E;IAC9E,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QAC7C,MAAM,IAAI,QAAQ,CAAC,2EAA2E,EAAE,IAAI,CAAC,KAAK,CAAC,CAAA;IAC7G,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { CliError, EXIT } from '../errors.js';
|
|
2
|
+
import { buildContext } from '../context.js';
|
|
3
|
+
import { printChannelMessages, printChatThread } from '../output.js';
|
|
4
|
+
import { parseChatRef } from '../chat.js';
|
|
5
|
+
// Read-only channel chat. Both commands take what QA pastes — the web link
|
|
6
|
+
// (…?chat=channel&sessionId=<uuid>&message=<id>) — or a bare channel
|
|
7
|
+
// session id. The token's user must be a member of the channel.
|
|
8
|
+
function resolveRef(input, message) {
|
|
9
|
+
const ref = parseChatRef(input, message);
|
|
10
|
+
if ('error' in ref)
|
|
11
|
+
throw new CliError(ref.error, EXIT.USAGE);
|
|
12
|
+
return ref;
|
|
13
|
+
}
|
|
14
|
+
function positiveInt(flag, value) {
|
|
15
|
+
if (value === undefined)
|
|
16
|
+
return undefined;
|
|
17
|
+
const n = Number(value);
|
|
18
|
+
if (!Number.isInteger(n) || n <= 0)
|
|
19
|
+
throw new CliError(`${flag} must be a positive integer, got "${value}".`, EXIT.USAGE);
|
|
20
|
+
return n;
|
|
21
|
+
}
|
|
22
|
+
export function registerChatCommands(program) {
|
|
23
|
+
const chat = program.command('chat').description('Read channel messages and their threads (read-only)');
|
|
24
|
+
chat
|
|
25
|
+
.command('show <link-or-session-id>')
|
|
26
|
+
.description('Show a channel message and every reply in its thread (a link to a reply shows the whole thread)')
|
|
27
|
+
.option('--message <id>', 'message id (overrides the link\'s message=)')
|
|
28
|
+
.action(async (input, o, cmd) => {
|
|
29
|
+
const ref = resolveRef(input, o.message);
|
|
30
|
+
if (ref.messageId === undefined) {
|
|
31
|
+
throw new CliError('No message to show — pass a link to a message or --message <id>. To browse a channel use `abe chat messages`.', EXIT.USAGE);
|
|
32
|
+
}
|
|
33
|
+
const { client, json } = buildContext(cmd.optsWithGlobals());
|
|
34
|
+
printChatThread(await client.getChatThread(ref.sessionId, ref.messageId), { json });
|
|
35
|
+
});
|
|
36
|
+
chat
|
|
37
|
+
.command('messages <link-or-session-id>')
|
|
38
|
+
.description("List a channel's messages: the latest page, or a window around a message (a link's message= or --around)")
|
|
39
|
+
.option('--around <id>', 'centre the page on this message')
|
|
40
|
+
.option('--before <id>', 'the page of messages older than this one')
|
|
41
|
+
.action(async (input, o, cmd) => {
|
|
42
|
+
const ref = resolveRef(input);
|
|
43
|
+
const before = positiveInt('--before', o.before);
|
|
44
|
+
const around = positiveInt('--around', o.around) ?? (before === undefined ? ref.messageId : undefined);
|
|
45
|
+
const { client, json } = buildContext(cmd.optsWithGlobals());
|
|
46
|
+
printChannelMessages(await client.listChannelMessages(ref.sessionId, { around, before }), { json });
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=chat.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chat.js","sourceRoot":"","sources":["../../src/commands/chat.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/tasks.js
CHANGED
|
@@ -2,6 +2,7 @@ import { CliError, EXIT } from '../errors.js';
|
|
|
2
2
|
import { buildContext } from '../context.js';
|
|
3
3
|
import { printTasks, printTask, emit, status } from '../output.js';
|
|
4
4
|
import { PRIORITIES, TASK_TYPES, SIZES, STATUSES, assertEnum } from '../enums.js';
|
|
5
|
+
import { resolveBodyMarkdown } from './bodyInput.js';
|
|
5
6
|
// Resolve a board reference (numeric id or slug/name) to a numeric id.
|
|
6
7
|
async function resolveBoardId(client, ref) {
|
|
7
8
|
if (/^\d+$/.test(ref))
|
|
@@ -91,17 +92,26 @@ export function registerTaskCommands(program) {
|
|
|
91
92
|
const { task: created } = await client.createTask(body);
|
|
92
93
|
if (json)
|
|
93
94
|
emit({ task: created }, { json });
|
|
94
|
-
else
|
|
95
|
+
else {
|
|
95
96
|
status(`Created task #${created.id} "${created.title}" on board ${boardId}.`);
|
|
97
|
+
// The link goes to stdout on its own line so scripts and agents can
|
|
98
|
+
// capture it (`url=$(abe task create ...)`) and hand it to a person.
|
|
99
|
+
if (created.url)
|
|
100
|
+
process.stdout.write(`${created.url}\n`);
|
|
101
|
+
}
|
|
96
102
|
});
|
|
97
103
|
addTaskFlags(task
|
|
98
104
|
.command('update <id>')
|
|
99
|
-
.description('Update any task property')
|
|
105
|
+
.description('Update any task property, or replace its doc (--body / --body-file; --description does the same)')
|
|
100
106
|
.option('--title <text>', 'new title')
|
|
101
107
|
.option('--board <slugOrId>', 'move to another board')
|
|
102
108
|
.option('--status <status>', `status (${STATUSES.join('|')})`)
|
|
103
|
-
.option('--display-order <n>', 'sort order', (v) => Number(v))
|
|
109
|
+
.option('--display-order <n>', 'sort order', (v) => Number(v))
|
|
110
|
+
.option('--body <markdown>', 'replace the task doc with this markdown')
|
|
111
|
+
.option('--body-file <path>', 'replace the task doc with this markdown file (- = stdin)')).action(async (id, o, cmd) => {
|
|
104
112
|
validateEnums(o);
|
|
113
|
+
// Resolve before auth/network so a bad flag combo or unreadable file exits 2 fast.
|
|
114
|
+
const bodyMarkdown = resolveBodyMarkdown(o);
|
|
105
115
|
const { client, json } = buildContext(cmd.optsWithGlobals());
|
|
106
116
|
const extra = {};
|
|
107
117
|
if (o.board !== undefined)
|
|
@@ -111,6 +121,8 @@ export function registerTaskCommands(program) {
|
|
|
111
121
|
const titleOpt = o.title;
|
|
112
122
|
if (titleOpt !== undefined)
|
|
113
123
|
extra.title = titleOpt;
|
|
124
|
+
if (bodyMarkdown !== undefined)
|
|
125
|
+
extra.body_markdown = bodyMarkdown;
|
|
114
126
|
const { task: updated } = await client.updateTask(Number(id), buildBody(o, extra));
|
|
115
127
|
if (json)
|
|
116
128
|
emit({ task: updated }, { json });
|
|
@@ -173,10 +185,11 @@ export function registerTaskCommands(program) {
|
|
|
173
185
|
.command('board')
|
|
174
186
|
.description('Full board state (all columns incl. done) — the truest source for reconciliation')
|
|
175
187
|
.requiredOption('--board <slugOrId>')
|
|
188
|
+
.option('--with-bodies', 'include each task\'s doc as body_markdown (one call instead of one `task show` per task)')
|
|
176
189
|
.action(async (o, cmd) => {
|
|
177
190
|
const { client, json } = buildContext(cmd.optsWithGlobals());
|
|
178
191
|
const boardId = await resolveBoardId(client, o.board);
|
|
179
|
-
const state = await client.boardState(boardId);
|
|
192
|
+
const state = await client.boardState(boardId, { withBodies: !!o.withBodies });
|
|
180
193
|
emit(state, { json });
|
|
181
194
|
if (!json)
|
|
182
195
|
status(JSON.stringify(state, null, 2));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tasks.js","sourceRoot":"","sources":["../../src/commands/tasks.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tasks.js","sourceRoot":"","sources":["../../src/commands/tasks.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,13 @@
|
|
|
1
|
+
import { CliError, EXIT } from '../errors.js';
|
|
1
2
|
import { buildContext } from '../context.js';
|
|
2
|
-
import { printWorksheet } from '../output.js';
|
|
3
|
+
import { printWorksheet, emit, status } from '../output.js';
|
|
4
|
+
import { resolveBodyMarkdown } from './bodyInput.js';
|
|
3
5
|
// Worksheets are ABE's docs. Every task's body lives in its linked worksheet
|
|
4
|
-
// (`abe task show` prints it
|
|
5
|
-
//
|
|
6
|
+
// (`abe task show` prints it; `abe task update --body-file` replaces it);
|
|
7
|
+
// other pages/specs/plans are worksheets too. `show` reads, `update` replaces
|
|
8
|
+
// the whole doc from markdown (converted server-side) and/or retitles it.
|
|
6
9
|
export function registerWorksheetCommands(program) {
|
|
7
|
-
const worksheet = program.command('worksheet').description('Read worksheets (the docs behind tasks and other pages)');
|
|
10
|
+
const worksheet = program.command('worksheet').description('Read and update worksheets (the docs behind tasks and other pages)');
|
|
8
11
|
worksheet
|
|
9
12
|
.command('show <id>')
|
|
10
13
|
.description('Show a worksheet with its body rendered as markdown')
|
|
@@ -13,5 +16,28 @@ export function registerWorksheetCommands(program) {
|
|
|
13
16
|
const { worksheet: found } = await client.getWorksheet(Number(id));
|
|
14
17
|
printWorksheet(found, { json });
|
|
15
18
|
});
|
|
19
|
+
worksheet
|
|
20
|
+
.command('update <id>')
|
|
21
|
+
.description('Replace a worksheet\'s body from markdown (--body / --body-file, - = stdin) and/or set its title')
|
|
22
|
+
.option('--title <text>', 'new title')
|
|
23
|
+
.option('--body <markdown>', 'replace the doc with this markdown')
|
|
24
|
+
.option('--body-file <path>', 'replace the doc with this markdown file (- = stdin)')
|
|
25
|
+
.action(async (id, o, cmd) => {
|
|
26
|
+
const bodyMarkdown = resolveBodyMarkdown(o);
|
|
27
|
+
if (bodyMarkdown === undefined && o.title === undefined) {
|
|
28
|
+
throw new CliError('Nothing to update — pass --title, --body, or --body-file.', EXIT.USAGE);
|
|
29
|
+
}
|
|
30
|
+
const { client, json } = buildContext(cmd.optsWithGlobals());
|
|
31
|
+
const fields = {};
|
|
32
|
+
if (o.title !== undefined)
|
|
33
|
+
fields.title = o.title;
|
|
34
|
+
if (bodyMarkdown !== undefined)
|
|
35
|
+
fields.bodyMarkdown = bodyMarkdown;
|
|
36
|
+
const { worksheet: updated } = await client.updateWorksheet(Number(id), fields);
|
|
37
|
+
if (json)
|
|
38
|
+
emit({ worksheet: updated }, { json });
|
|
39
|
+
else
|
|
40
|
+
status(`Updated worksheet #${updated.id} "${updated.title}"${bodyMarkdown !== undefined ? ' (body replaced)' : ''}.`);
|
|
41
|
+
});
|
|
16
42
|
}
|
|
17
43
|
//# sourceMappingURL=worksheets.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worksheets.js","sourceRoot":"","sources":["../../src/commands/worksheets.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAc,MAAM,eAAe,CAAA;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;
|
|
1
|
+
{"version":3,"file":"worksheets.js","sourceRoot":"","sources":["../../src/commands/worksheets.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,cAAc,CAAA;AAC7C,OAAO,EAAE,YAAY,EAAc,MAAM,eAAe,CAAA;AACxD,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AAC3D,OAAO,EAAE,mBAAmB,EAAa,MAAM,gBAAgB,CAAA;AAE/D,6EAA6E;AAC7E,0EAA0E;AAC1E,8EAA8E;AAC9E,0EAA0E;AAC1E,MAAM,UAAU,yBAAyB,CAAC,OAAgB;IACxD,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,WAAW,CAAC,oEAAoE,CAAC,CAAA;IAEhI,SAAS;SACN,OAAO,CAAC,WAAW,CAAC;SACpB,WAAW,CAAC,qDAAqD,CAAC;SAClE,MAAM,CAAC,KAAK,EAAE,EAAU,EAAE,EAAW,EAAE,GAAY,EAAE,EAAE;QACtD,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,YAAY,CAAC,GAAG,CAAC,eAAe,EAAgB,CAAC,CAAA;QAC1E,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAA;QAClE,cAAc,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,CAAA;IACjC,CAAC,CAAC,CAAA;IAEJ,SAAS;SACN,OAAO,CAAC,aAAa,CAAC;SACtB,WAAW,CAAC,kGAAkG,CAAC;SAC/G,MAAM,CAAC,gBAAgB,EAAE,WAAW,CAAC;SACrC,MAAM,CAAC,mBAAmB,EAAE,oCAAoC,CAAC;SACjE,MAAM,CAAC,oBAAoB,EAAE,qDAAqD,CAAC;SACnF,MAAM,CAAC,KAAK,EAAE,EAAU,EAAE,CAAiC,EAAE,GAAY,EAAE,EAAE;QAC5E,MAAM,YAAY,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAAA;QAC3C,IAAI,YAAY,KAAK,SAAS,IAAI,CAAC,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YACxD,MAAM,IAAI,QAAQ,CAAC,2DAA2D,EAAE,IAAI,CAAC,KAAK,CAAC,CAAA;QAC7F,CAAC;QACD,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,YAAY,CAAC,GAAG,CAAC,eAAe,EAAgB,CAAC,CAAA;QAC1E,MAAM,MAAM,GAA8C,EAAE,CAAA;QAC5D,IAAI,CAAC,CAAC,KAAK,KAAK,SAAS;YAAE,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAA;QACjD,IAAI,YAAY,KAAK,SAAS;YAAE,MAAM,CAAC,YAAY,GAAG,YAAY,CAAA;QAClE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,CAAA;QAC/E,IAAI,IAAI;YAAE,IAAI,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAA;;YAC3C,MAAM,CAAC,sBAAsB,OAAO,CAAC,EAAE,KAAK,OAAO,CAAC,KAAK,IAAI,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;IAC5H,CAAC,CAAC,CAAA;AACN,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -6,6 +6,7 @@ import { registerBoardCommands } from './commands/boards.js';
|
|
|
6
6
|
import { registerTaskCommands } from './commands/tasks.js';
|
|
7
7
|
import { registerMembersCommands } from './commands/members.js';
|
|
8
8
|
import { registerWorksheetCommands } from './commands/worksheets.js';
|
|
9
|
+
import { registerChatCommands } from './commands/chat.js';
|
|
9
10
|
// Read the version from package.json so `abe --version` never drifts from the
|
|
10
11
|
// published package (package.json ships alongside dist/ in the npm tarball).
|
|
11
12
|
function packageVersion() {
|
|
@@ -20,7 +21,7 @@ function packageVersion() {
|
|
|
20
21
|
export function buildProgram() {
|
|
21
22
|
const program = new Command('abe');
|
|
22
23
|
program
|
|
23
|
-
.description('Drive ABE project boards, tasks, and worksheets from the command line.')
|
|
24
|
+
.description('Drive ABE project boards, tasks, and worksheets, and read channel chat, from the command line.')
|
|
24
25
|
.version(packageVersion())
|
|
25
26
|
.option('--json', 'machine-readable JSON output on stdout (status text goes to stderr)')
|
|
26
27
|
.option('--api-url <url>', 'ABE API base URL (env: ABE_API_URL)')
|
|
@@ -34,6 +35,7 @@ export function buildProgram() {
|
|
|
34
35
|
registerTaskCommands(program);
|
|
35
36
|
registerWorksheetCommands(program);
|
|
36
37
|
registerMembersCommands(program);
|
|
38
|
+
registerChatCommands(program);
|
|
37
39
|
return program;
|
|
38
40
|
}
|
|
39
41
|
// Run the CLI and translate any thrown error into a stable exit code. Returns
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAEtC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAEnC,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,aAAa,CAAA;AAC5C,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAA;AACzD,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAA;AAC5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAA;AAC1D,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAA;AAC/D,OAAO,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/output.js
CHANGED
|
@@ -67,6 +67,7 @@ export function printTask(task, opts) {
|
|
|
67
67
|
`assignee: ${task.assignee_name ?? '(unassigned)'}`,
|
|
68
68
|
`labels: ${(task.labels ?? []).join(', ') || '(none)'}`,
|
|
69
69
|
`worksheet: ${task.worksheet_id ?? '(none)'}`,
|
|
70
|
+
...(task.url ? [`url: ${task.url}`] : []),
|
|
70
71
|
];
|
|
71
72
|
// The body: the rendered worksheet doc when the server sent a non-empty
|
|
72
73
|
// one (a doc can legitimately render to nothing), else the create-time
|
|
@@ -100,4 +101,45 @@ export function printWorksheet(ws, opts) {
|
|
|
100
101
|
status('(empty)');
|
|
101
102
|
}
|
|
102
103
|
}
|
|
104
|
+
// One message as a plain block: a greppable header line, then the text. ABE's
|
|
105
|
+
// own messages have no user, so they read as "ABE".
|
|
106
|
+
function chatBlock(m, marker = '') {
|
|
107
|
+
const who = m.author ?? (m.role === 'assistant' ? 'ABE' : m.role || 'unknown');
|
|
108
|
+
const extras = [
|
|
109
|
+
m.reply_count ? `(${m.reply_count} ${m.reply_count === 1 ? 'reply' : 'replies'})` : '',
|
|
110
|
+
m.edited_at ? '(edited)' : '',
|
|
111
|
+
].filter(Boolean);
|
|
112
|
+
const header = [`${marker}#${m.id}`, who, m.created_at, ...extras].join(' ');
|
|
113
|
+
const body = m.deleted ? '(deleted)' : m.content.trim();
|
|
114
|
+
const files = m.attachments.map((a) => `[attachment] ${a.filename}${a.url ? ` ${a.url}` : ''}`);
|
|
115
|
+
return [header, ...(body ? [body] : []), ...files].join('\n');
|
|
116
|
+
}
|
|
117
|
+
export function printChatThread(thread, opts) {
|
|
118
|
+
if (opts.json)
|
|
119
|
+
return emit({ thread }, opts);
|
|
120
|
+
const parts = [chatBlock(thread.parent)];
|
|
121
|
+
if (thread.replies.length) {
|
|
122
|
+
parts.push(`--- ${thread.replies.length} ${thread.replies.length === 1 ? 'reply' : 'replies'} ---`);
|
|
123
|
+
parts.push(...thread.replies.map((r) => chatBlock(r, r.id === thread.requested_message_id ? '>> ' : '')));
|
|
124
|
+
}
|
|
125
|
+
process.stdout.write(`${parts.join('\n\n')}\n`);
|
|
126
|
+
if (!thread.replies.length)
|
|
127
|
+
status('(no replies)');
|
|
128
|
+
}
|
|
129
|
+
export function printChannelMessages(page, opts) {
|
|
130
|
+
if (opts.json)
|
|
131
|
+
return emit(page, opts);
|
|
132
|
+
if (page.window && !page.window.found)
|
|
133
|
+
status('That message was not found in this channel — showing the latest messages instead.');
|
|
134
|
+
if (!page.messages.length) {
|
|
135
|
+
status('No messages.');
|
|
136
|
+
return;
|
|
137
|
+
}
|
|
138
|
+
const target = page.window?.found ? page.window.target_message_id : null;
|
|
139
|
+
process.stdout.write(`# ${page.channel.name ?? page.channel.session_id}\n\n`);
|
|
140
|
+
const blocks = page.messages.map((m) => chatBlock(m, m.id === target ? '>> ' : ''));
|
|
141
|
+
process.stdout.write(`${blocks.join('\n\n')}\n`);
|
|
142
|
+
if (page.has_more)
|
|
143
|
+
status(`(older messages exist — pass --before ${page.messages[0].id})`);
|
|
144
|
+
}
|
|
103
145
|
//# sourceMappingURL=output.js.map
|
package/dist/output.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"output.js","sourceRoot":"","sources":["../src/output.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"output.js","sourceRoot":"","sources":["../src/output.ts"],"names":[],"mappings":"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"}
|