@scribe-platform/cli 0.8.0 → 0.9.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 +28 -0
- package/dist/commands/proof.d.ts +5 -0
- package/dist/commands/proof.d.ts.map +1 -0
- package/dist/commands/proof.js +440 -0
- package/dist/commands/proof.js.map +1 -0
- package/dist/commands/prospect.d.ts.map +1 -1
- package/dist/commands/prospect.js +9 -0
- package/dist/commands/prospect.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +11 -1
- package/dist/index.js.map +1 -1
- package/dist/lib/client.d.ts +169 -0
- package/dist/lib/client.d.ts.map +1 -1
- package/dist/lib/client.js +77 -0
- package/dist/lib/client.js.map +1 -1
- package/dist/lib/proof-folder.d.ts +86 -0
- package/dist/lib/proof-folder.d.ts.map +1 -0
- package/dist/lib/proof-folder.js +226 -0
- package/dist/lib/proof-folder.js.map +1 -0
- package/dist/lib/proof-preview.d.ts +39 -0
- package/dist/lib/proof-preview.d.ts.map +1 -0
- package/dist/lib/proof-preview.js +318 -0
- package/dist/lib/proof-preview.js.map +1 -0
- package/dist/lib/proof-push.d.ts +42 -0
- package/dist/lib/proof-push.d.ts.map +1 -0
- package/dist/lib/proof-push.js +91 -0
- package/dist/lib/proof-push.js.map +1 -0
- package/package.json +5 -3
- package/runtime/proof.js +139 -0
- package/skills/scribe-site-builder/SKILL.md +21 -1
- package/skills/scribe-site-builder/recipes/README.md +5 -4
- package/skills/scribe-site-builder/recipes/proofs.md +311 -0
package/README.md
CHANGED
|
@@ -197,6 +197,34 @@ Dispatches the site's build workflow and returns immediately. Debounced to once
|
|
|
197
197
|
every five minutes. Prefer `scribe site deploy`, which waits for the build and
|
|
198
198
|
then checks the result.
|
|
199
199
|
|
|
200
|
+
### Proofs
|
|
201
|
+
|
|
202
|
+
```
|
|
203
|
+
scribe proof create --client <slug> --title "Logo concepts" [--dir proofs/logos]
|
|
204
|
+
scribe proof check [dir]
|
|
205
|
+
scribe proof preview [dir]
|
|
206
|
+
scribe proof push [dir] [--note "What changed"]
|
|
207
|
+
scribe proof list [--client <slug>] [--status <status>]
|
|
208
|
+
scribe proof show [client/proof]
|
|
209
|
+
scribe proof pull [client/proof] [--version <n|draft>] [--dir <path>]
|
|
210
|
+
scribe proof close [client/proof] [--reason <text>]
|
|
211
|
+
scribe proof reopen [client/proof]
|
|
212
|
+
```
|
|
213
|
+
|
|
214
|
+
A Proof is a small HTML page, plus its images, CSS and JS, sent to a client for
|
|
215
|
+
review: a logo board, a homepage direction. It belongs to a client, so the
|
|
216
|
+
prospect has to exist first. `create` links a folder to it with a
|
|
217
|
+
`.scribe-proof.json`, and inside that folder every other command needs no
|
|
218
|
+
argument.
|
|
219
|
+
|
|
220
|
+
Mark each thing the client can pick with `data-proof-option="<id>"` (and
|
|
221
|
+
optionally `data-proof-label`), and keep links relative. `check` flags any that
|
|
222
|
+
start with `/`, which would break for the client. `preview` serves the folder
|
|
223
|
+
on your machine exactly as the client will see it, with hearts, comments and
|
|
224
|
+
pins working, and saves nothing. `push` uploads only the files that changed and
|
|
225
|
+
makes them the Proof's draft, replacing any unsent draft. It sends nothing to
|
|
226
|
+
anyone. Sending to the client arrives in a later release.
|
|
227
|
+
|
|
200
228
|
## Programmatic use
|
|
201
229
|
|
|
202
230
|
The API client and config helpers are exported for scripting:
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"proof.d.ts","sourceRoot":"","sources":["../../src/commands/proof.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAkCpC,iBAAS,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAItE;AAwHD,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA0T5D;AAED,OAAO,EAAE,UAAU,EAAE,CAAC"}
|
|
@@ -0,0 +1,440 @@
|
|
|
1
|
+
import { existsSync, mkdirSync } from 'node:fs';
|
|
2
|
+
import { resolve } from 'node:path';
|
|
3
|
+
import { loadConfig } from '../lib/config.js';
|
|
4
|
+
import { ScribeClient } from '../lib/client.js';
|
|
5
|
+
import { CliExit, printResult, requireClient, runAction } from '../lib/cli-utils.js';
|
|
6
|
+
import { checkFolder, readProofConfig, resolveProofRef, writeProofConfig, PROOF_CONFIG_FILE } from '../lib/proof-folder.js';
|
|
7
|
+
import { defaultPullDir, pullProof, pushProof, PullRefused } from '../lib/proof-push.js';
|
|
8
|
+
import { startPreview } from '../lib/proof-preview.js';
|
|
9
|
+
/**
|
|
10
|
+
* RFC 0029 — `scribe proof`: building a Proof locally, pushing versions of it,
|
|
11
|
+
* sending one to a Client, reading what they said and replying.
|
|
12
|
+
*
|
|
13
|
+
* Everything here is reversible except `send`, which freezes a version and
|
|
14
|
+
* emails it — which is why the skill is required to ask Ashley first.
|
|
15
|
+
*
|
|
16
|
+
* A Proof is addressed `<client>/<proof>` — or, inside a Proof folder, by the
|
|
17
|
+
* folder's `.scribe-proof.json`, so most commands need no argument at all.
|
|
18
|
+
*/
|
|
19
|
+
const STATUSES = ['draft', 'in-review', 'changes-requested', 'approved', 'closed'];
|
|
20
|
+
const ACCESS = ['link', 'sign-in'];
|
|
21
|
+
function fail(message) {
|
|
22
|
+
console.error(message);
|
|
23
|
+
process.exitCode = 1;
|
|
24
|
+
throw new CliExit();
|
|
25
|
+
}
|
|
26
|
+
function refOrFail(arg, dir) {
|
|
27
|
+
const resolved = resolveProofRef(arg, dir);
|
|
28
|
+
if (!resolved.ok)
|
|
29
|
+
fail(resolved.error);
|
|
30
|
+
return resolved.ref;
|
|
31
|
+
}
|
|
32
|
+
function versionArg(value) {
|
|
33
|
+
if (value === undefined)
|
|
34
|
+
return null;
|
|
35
|
+
if (value === 'draft')
|
|
36
|
+
return 'draft';
|
|
37
|
+
return /^[1-9]\d{0,5}$/.test(value) ? Number(value) : NaN;
|
|
38
|
+
}
|
|
39
|
+
/** Prints a check's findings; returns false if the push should not go ahead. */
|
|
40
|
+
function reportCheck(result, opts) {
|
|
41
|
+
for (const error of result.errors)
|
|
42
|
+
console.error(`✗ ${error}`);
|
|
43
|
+
for (const link of result.brokenLinks)
|
|
44
|
+
console.error(`${opts.force ? '!' : '✗'} ${link}`);
|
|
45
|
+
for (const warning of result.warnings)
|
|
46
|
+
console.error(`! ${warning}`);
|
|
47
|
+
if (result.errors.length > 0)
|
|
48
|
+
return false;
|
|
49
|
+
if (result.brokenLinks.length > 0 && !opts.force) {
|
|
50
|
+
console.error('\nLinks starting with / will be broken for the client. Make them relative, or pass --force to push anyway.');
|
|
51
|
+
return false;
|
|
52
|
+
}
|
|
53
|
+
return true;
|
|
54
|
+
}
|
|
55
|
+
function summarizeCheck(result) {
|
|
56
|
+
const size = result.totalBytes < 1024 * 1024
|
|
57
|
+
? `${Math.max(1, Math.round(result.totalBytes / 1024))} KB`
|
|
58
|
+
: `${Math.round((result.totalBytes / (1024 * 1024)) * 10) / 10} MB`;
|
|
59
|
+
// A gallery's Options don't exist yet — the server names one per file at
|
|
60
|
+
// push — so saying "no options marked" would read as a problem.
|
|
61
|
+
const options = result.gallery
|
|
62
|
+
? `a gallery: one option per file`
|
|
63
|
+
: result.options.length
|
|
64
|
+
? `${result.options.length} option(s): ${result.options.map((o) => o.id).join(', ')}`
|
|
65
|
+
: 'no options marked';
|
|
66
|
+
return `${result.files.length} file(s), ${size}, ${options}`;
|
|
67
|
+
}
|
|
68
|
+
/** The last pushed version's Option ids, for check's "dropped" line. Quietly empty if offline or logged out. */
|
|
69
|
+
async function previousOptions(ref) {
|
|
70
|
+
const config = loadConfig();
|
|
71
|
+
if (!ref || !config)
|
|
72
|
+
return [];
|
|
73
|
+
try {
|
|
74
|
+
const proof = await new ScribeClient(config).getProof(ref.client, ref.proof);
|
|
75
|
+
const latest = proof.versions[proof.versions.length - 1];
|
|
76
|
+
return latest ? latest.options.map((o) => o.id) : [];
|
|
77
|
+
}
|
|
78
|
+
catch {
|
|
79
|
+
return [];
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* The human-readable form of `proof feedback`.
|
|
84
|
+
*
|
|
85
|
+
* Grouped by option, because that's how the next version gets drafted: an
|
|
86
|
+
* option nobody picked gets dropped, and one with a comment on it gets
|
|
87
|
+
* redrawn. `--json` carries the same shape for Claude to read.
|
|
88
|
+
*/
|
|
89
|
+
function printFeedback(report) {
|
|
90
|
+
console.log(`${report.proof.title} — ${report.proof.clientName}, v${report.version}`);
|
|
91
|
+
if (report.viewers.length === 0) {
|
|
92
|
+
console.log('\nNobody has opened it yet.');
|
|
93
|
+
}
|
|
94
|
+
else {
|
|
95
|
+
console.log(`\nOpened by: ${report.viewers.map((v) => v.name).join(', ')}`);
|
|
96
|
+
}
|
|
97
|
+
const withFeedback = report.options.filter((o) => o.reactions.up.length + o.reactions.down.length > 0 || o.comments.length > 0);
|
|
98
|
+
if (report.options.length > 0) {
|
|
99
|
+
console.log('\nOptions:');
|
|
100
|
+
for (const option of report.options) {
|
|
101
|
+
const felt = [
|
|
102
|
+
option.reactions.up.length ? `👍 ${option.reactions.up.join(', ')}` : null,
|
|
103
|
+
option.reactions.down.length ? `👎 ${option.reactions.down.join(', ')}` : null,
|
|
104
|
+
].filter(Boolean);
|
|
105
|
+
const liked = felt.length ? felt.join(' ') : 'no reactions';
|
|
106
|
+
const from = option.from ? ` (from ${option.from})` : '';
|
|
107
|
+
console.log(` ${option.optionId}${option.label ? ` — ${option.label}` : ''}${from}: ${liked}`);
|
|
108
|
+
for (const comment of option.comments)
|
|
109
|
+
printComment(comment, ' ');
|
|
110
|
+
}
|
|
111
|
+
if (withFeedback.length === 0)
|
|
112
|
+
console.log(' (nothing said about any of them yet)');
|
|
113
|
+
}
|
|
114
|
+
if (report.pinned.length > 0) {
|
|
115
|
+
console.log('\nOn the page:');
|
|
116
|
+
for (const comment of report.pinned)
|
|
117
|
+
printComment(comment, ' ');
|
|
118
|
+
}
|
|
119
|
+
if (report.general.length > 0) {
|
|
120
|
+
console.log('\nGeneral:');
|
|
121
|
+
for (const comment of report.general)
|
|
122
|
+
printComment(comment, ' ');
|
|
123
|
+
}
|
|
124
|
+
if (report.decisions.length > 0) {
|
|
125
|
+
console.log('\nDecisions:');
|
|
126
|
+
for (const decision of report.decisions) {
|
|
127
|
+
const what = decision.decision === 'approved' ? 'approved' : 'asked for changes';
|
|
128
|
+
console.log(` ${decision.reviewerName} ${what}${decision.body ? ` — "${decision.body}"` : ''}`);
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
function printComment(comment, indent) {
|
|
133
|
+
const who = comment.fromStaff ? `${comment.reviewerName} (you)` : comment.reviewerName;
|
|
134
|
+
// The id is printed so `scribe proof reply <id>` needs no --json round trip.
|
|
135
|
+
const where = comment.pin ? ' [pinned]' : '';
|
|
136
|
+
console.log(`${indent}${who}${where}: "${comment.body}" (${comment.id})`);
|
|
137
|
+
}
|
|
138
|
+
function printProof(proof) {
|
|
139
|
+
console.log(`${proof.title} — ${proof.clientName} (${proof.clientSlug}/${proof.slug})`);
|
|
140
|
+
console.log(`Status: ${proof.status}${proof.closedReason ? ` (${proof.closedReason})` : ''}`);
|
|
141
|
+
console.log(`Access: ${proof.access}${proof.siteSlug ? ` · site ${proof.siteSlug}` : ''}`);
|
|
142
|
+
if (proof.versions.length === 0) {
|
|
143
|
+
console.log('Versions: none yet — run `scribe proof push` in the Proof folder.');
|
|
144
|
+
}
|
|
145
|
+
else {
|
|
146
|
+
console.log('Versions:');
|
|
147
|
+
for (const v of proof.versions) {
|
|
148
|
+
const state = v.sentAt ? `sent ${v.sentAt}` : 'draft, not sent';
|
|
149
|
+
const options = v.options.length ? ` · ${v.options.map((o) => o.id).join(', ')}` : '';
|
|
150
|
+
console.log(` v${v.number} (${state}) · ${v.files} file(s)${options}${v.note ? `\n "${v.note}"` : ''}`);
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
if (proof.previewUrl)
|
|
154
|
+
console.log(`Staff preview (valid 24h, not for clients): ${proof.previewUrl}`);
|
|
155
|
+
}
|
|
156
|
+
export function registerProofCommands(program) {
|
|
157
|
+
const proof = program
|
|
158
|
+
.command('proof')
|
|
159
|
+
.description('Proofs — work sent to a client for review (logo boards, mockups). Build in a folder, preview, push versions');
|
|
160
|
+
proof
|
|
161
|
+
.command('create')
|
|
162
|
+
.description('Create a Proof for a client and link a folder to it (the client must exist — create the prospect first)')
|
|
163
|
+
.requiredOption('--client <slug>', 'The client or prospect this Proof is for')
|
|
164
|
+
.requiredOption('--title <title>', 'What the client will see it called, e.g. "Logo concepts"')
|
|
165
|
+
.option('--site <slug>', 'Attach it to one of the client\'s sites (defaults access to sign-in)')
|
|
166
|
+
.option('--access <mode>', `${ACCESS.join(' or ')} (default: link, or sign-in with --site)`)
|
|
167
|
+
.option('--slug <slug>', 'The Proof\'s short name in commands (default: from the title)')
|
|
168
|
+
.option('--dir <path>', 'The folder to link (created if missing)', '.')
|
|
169
|
+
.option('--force', `Re-link a folder that already has a ${PROOF_CONFIG_FILE}`)
|
|
170
|
+
.option('--json', 'Output as JSON')
|
|
171
|
+
.action(runAction(async (opts) => {
|
|
172
|
+
if (opts.access && !ACCESS.includes(opts.access))
|
|
173
|
+
fail(`--access must be ${ACCESS.join(' or ')}`);
|
|
174
|
+
const dir = resolve(opts.dir);
|
|
175
|
+
const existing = readProofConfig(dir);
|
|
176
|
+
if (existing && !opts.force) {
|
|
177
|
+
fail(`${dir} is already linked to ${existing.client}/${existing.proof}. Use a new folder, or pass --force.`);
|
|
178
|
+
}
|
|
179
|
+
const created = await requireClient().createProof({
|
|
180
|
+
client: opts.client,
|
|
181
|
+
title: opts.title,
|
|
182
|
+
site: opts.site,
|
|
183
|
+
access: opts.access,
|
|
184
|
+
slug: opts.slug,
|
|
185
|
+
});
|
|
186
|
+
if (!existsSync(dir))
|
|
187
|
+
mkdirSync(dir, { recursive: true });
|
|
188
|
+
writeProofConfig(dir, { client: created.clientSlug, proof: created.slug });
|
|
189
|
+
if (opts.json)
|
|
190
|
+
return printResult(created, true);
|
|
191
|
+
console.log(`Created ${created.clientSlug}/${created.slug} — "${created.title}" for ${created.clientName} (${created.access} access)`);
|
|
192
|
+
console.log(`Linked ${dir}. Build the page there, then \`scribe proof preview\` and \`scribe proof push\`.`);
|
|
193
|
+
}));
|
|
194
|
+
proof
|
|
195
|
+
.command('check')
|
|
196
|
+
.description('Report what a push would refuse or warn about, without uploading anything')
|
|
197
|
+
.argument('[dir]', 'The Proof folder', '.')
|
|
198
|
+
.action(runAction(async (dirArg) => {
|
|
199
|
+
const dir = resolve(dirArg);
|
|
200
|
+
const result = checkFolder(dir, await previousOptions(readProofConfig(dir)));
|
|
201
|
+
const ok = reportCheck(result, {});
|
|
202
|
+
console.log(`${ok ? '✓' : '✗'} ${summarizeCheck(result)}`);
|
|
203
|
+
if (!ok)
|
|
204
|
+
process.exitCode = 1;
|
|
205
|
+
}));
|
|
206
|
+
proof
|
|
207
|
+
.command('preview')
|
|
208
|
+
.description('Serve the folder locally exactly as the client will see it — hearts, comments and pins work, nothing is saved')
|
|
209
|
+
.argument('[dir]', 'The Proof folder', '.')
|
|
210
|
+
.option('--port <port>', 'Port to listen on (default: any free one)')
|
|
211
|
+
.action(runAction(async (dirArg, opts) => {
|
|
212
|
+
const dir = resolve(dirArg);
|
|
213
|
+
const result = checkFolder(dir);
|
|
214
|
+
reportCheck(result, { force: true });
|
|
215
|
+
const port = opts.port ? Number(opts.port) : undefined;
|
|
216
|
+
if (port !== undefined && (!Number.isInteger(port) || port < 0 || port > 65535))
|
|
217
|
+
fail('--port must be a port number');
|
|
218
|
+
const server = await startPreview({ dir, port, log: (line) => console.log(` ${line}`) });
|
|
219
|
+
console.log(`Previewing ${dir}`);
|
|
220
|
+
console.log(`Open ${server.url} — feedback you try there prints below. Ctrl-C to stop.`);
|
|
221
|
+
// Runs until interrupted; the process staying alive is the point.
|
|
222
|
+
await new Promise((done) => process.once('SIGINT', () => server.close().then(done)));
|
|
223
|
+
}));
|
|
224
|
+
proof
|
|
225
|
+
.command('push')
|
|
226
|
+
.description('Upload the folder as the Proof\'s draft version (replacing any unsent draft). Sends nothing to the client')
|
|
227
|
+
.argument('[dir]', 'The Proof folder', '.')
|
|
228
|
+
.option('--proof <client/proof>', `Which Proof, if the folder has no ${PROOF_CONFIG_FILE}`)
|
|
229
|
+
.option('--note <text>', 'What changed in this version — the client sees it, e.g. "Three simpler takes on the one you liked"')
|
|
230
|
+
.option('--force', 'Push even with links that start with / (they will be broken for the client)')
|
|
231
|
+
.option('--json', 'Output as JSON')
|
|
232
|
+
.action(runAction(async (dirArg, opts) => {
|
|
233
|
+
const dir = resolve(dirArg);
|
|
234
|
+
const ref = refOrFail(opts.proof, dir);
|
|
235
|
+
const client = requireClient();
|
|
236
|
+
const result = checkFolder(dir, await previousOptions(ref));
|
|
237
|
+
if (!reportCheck(result, { force: opts.force })) {
|
|
238
|
+
process.exitCode = 1;
|
|
239
|
+
return;
|
|
240
|
+
}
|
|
241
|
+
const outcome = await pushProof({
|
|
242
|
+
api: client,
|
|
243
|
+
ref,
|
|
244
|
+
files: result.files,
|
|
245
|
+
note: opts.note,
|
|
246
|
+
onUpload: opts.json ? undefined : (path) => console.log(` ↑ ${path}`),
|
|
247
|
+
});
|
|
248
|
+
if (opts.json)
|
|
249
|
+
return printResult(outcome, true);
|
|
250
|
+
console.log(`Pushed ${ref.client}/${ref.proof} as draft v${outcome.version.number}: ${outcome.uploaded} uploaded, ${outcome.reused} unchanged.`);
|
|
251
|
+
if (outcome.version.options.length)
|
|
252
|
+
console.log(`Options: ${outcome.version.options.map((o) => o.id).join(', ')}`);
|
|
253
|
+
console.log(`Staff preview (valid 24h, not for clients): ${outcome.previewUrl}`);
|
|
254
|
+
console.log('Nothing has been sent to the client.');
|
|
255
|
+
}));
|
|
256
|
+
proof
|
|
257
|
+
.command('list')
|
|
258
|
+
.description('List Proofs, most recently active first')
|
|
259
|
+
.option('--client <slug>', 'Only this client\'s Proofs')
|
|
260
|
+
.option('--status <status>', STATUSES.join(', '))
|
|
261
|
+
.option('--json', 'Output as JSON')
|
|
262
|
+
.action(runAction(async (opts) => {
|
|
263
|
+
if (opts.status && !STATUSES.includes(opts.status))
|
|
264
|
+
fail(`--status must be one of: ${STATUSES.join(', ')}`);
|
|
265
|
+
const items = await requireClient().listProofs(opts);
|
|
266
|
+
if (opts.json)
|
|
267
|
+
return printResult(items, true);
|
|
268
|
+
if (items.length === 0) {
|
|
269
|
+
console.log('No Proofs yet.');
|
|
270
|
+
return;
|
|
271
|
+
}
|
|
272
|
+
printResult(items.map((p) => ({
|
|
273
|
+
proof: `${p.clientSlug}/${p.slug}`,
|
|
274
|
+
title: p.title,
|
|
275
|
+
status: p.status,
|
|
276
|
+
sent: p.currentVersion ? `v${p.currentVersion}` : '—',
|
|
277
|
+
draft: p.draftVersion ? `v${p.draftVersion}` : '',
|
|
278
|
+
lastActivity: p.lastActivityAt,
|
|
279
|
+
})), false);
|
|
280
|
+
}));
|
|
281
|
+
proof
|
|
282
|
+
.command('show')
|
|
283
|
+
.description('Show a Proof: status, versions and their notes, and a staff preview link')
|
|
284
|
+
.argument('[proof]', `<client>/<proof> (default: this folder's ${PROOF_CONFIG_FILE})`)
|
|
285
|
+
.option('--json', 'Output as JSON')
|
|
286
|
+
.action(runAction(async (arg, opts) => {
|
|
287
|
+
const ref = refOrFail(arg, process.cwd());
|
|
288
|
+
const detail = await requireClient().getProof(ref.client, ref.proof);
|
|
289
|
+
if (opts.json)
|
|
290
|
+
return printResult(detail, true);
|
|
291
|
+
printProof(detail);
|
|
292
|
+
}));
|
|
293
|
+
proof
|
|
294
|
+
.command('pull')
|
|
295
|
+
.description('Download a version\'s files — to pick up on another machine, or bring back an older direction')
|
|
296
|
+
.argument('[proof]', `<client>/<proof> (default: this folder's ${PROOF_CONFIG_FILE})`)
|
|
297
|
+
.option('--version <n>', 'A version number, or "draft" (default: the newest)')
|
|
298
|
+
.option('--dir <path>', 'Where to put the files (default: a new <proof>-v<n> folder here)')
|
|
299
|
+
.option('--force', 'Write into a folder that already has files in it')
|
|
300
|
+
.action(runAction(async (arg, opts) => {
|
|
301
|
+
const ref = refOrFail(arg, process.cwd());
|
|
302
|
+
const client = requireClient();
|
|
303
|
+
let version = versionArg(opts.version);
|
|
304
|
+
if (Number.isNaN(version))
|
|
305
|
+
fail('--version must be a number or "draft"');
|
|
306
|
+
if (version === null) {
|
|
307
|
+
const detail = await client.getProof(ref.client, ref.proof);
|
|
308
|
+
version = detail.draftVersion ? 'draft' : detail.currentVersion || null;
|
|
309
|
+
if (version === null)
|
|
310
|
+
fail(`${ref.client}/${ref.proof} has no versions yet.`);
|
|
311
|
+
}
|
|
312
|
+
const dir = resolve(opts.dir ?? defaultPullDir(process.cwd(), ref, version));
|
|
313
|
+
try {
|
|
314
|
+
const pulled = await pullProof({ api: client, ref, version, dir, force: opts.force });
|
|
315
|
+
console.log(`Pulled v${pulled.number} (${pulled.manifest.length} file(s)) into ${dir}`);
|
|
316
|
+
}
|
|
317
|
+
catch (err) {
|
|
318
|
+
if (err instanceof PullRefused)
|
|
319
|
+
fail(err.message);
|
|
320
|
+
throw err;
|
|
321
|
+
}
|
|
322
|
+
}));
|
|
323
|
+
proof
|
|
324
|
+
.command('feedback')
|
|
325
|
+
.description('What the client said about a version — picks, comments and decisions, grouped by option')
|
|
326
|
+
.argument('[proof]', `<client>/<proof> (default: this folder's ${PROOF_CONFIG_FILE})`)
|
|
327
|
+
.option('--version <n>', 'Which version (default: the newest one the client was sent)')
|
|
328
|
+
.option('--json', 'Output as JSON')
|
|
329
|
+
.action(runAction(async (arg, opts) => {
|
|
330
|
+
const ref = refOrFail(arg, process.cwd());
|
|
331
|
+
let which;
|
|
332
|
+
if (opts.version !== undefined) {
|
|
333
|
+
const parsed = versionArg(opts.version);
|
|
334
|
+
if (parsed === null || Number.isNaN(parsed))
|
|
335
|
+
fail(`Unknown version "${opts.version}"`);
|
|
336
|
+
which = parsed;
|
|
337
|
+
}
|
|
338
|
+
const report = await requireClient().proofFeedback(ref.client, ref.proof, which);
|
|
339
|
+
if (opts.json) {
|
|
340
|
+
console.log(JSON.stringify(report, null, 2));
|
|
341
|
+
return;
|
|
342
|
+
}
|
|
343
|
+
printFeedback(report);
|
|
344
|
+
}));
|
|
345
|
+
proof
|
|
346
|
+
.command('reply')
|
|
347
|
+
.description('Reply to one of the client’s comments. They see it next time they open the proof')
|
|
348
|
+
.argument('<event-id>', 'The comment’s id, from `scribe proof feedback --json`')
|
|
349
|
+
.argument('<text>', 'What to say')
|
|
350
|
+
.option('--proof <proof>', `<client>/<proof> (default: this folder's ${PROOF_CONFIG_FILE})`)
|
|
351
|
+
.action(runAction(async (eventId, text, opts) => {
|
|
352
|
+
const ref = refOrFail(opts.proof, process.cwd());
|
|
353
|
+
await requireClient().replyToProofComment(ref.client, ref.proof, eventId, text);
|
|
354
|
+
console.log('Replied. They’ll see it the next time they open the proof.');
|
|
355
|
+
}));
|
|
356
|
+
proof
|
|
357
|
+
.command('send')
|
|
358
|
+
.description('Send the pushed draft to the client as the next version, by email. Outward-facing — ask first')
|
|
359
|
+
.argument('[proof]', `<client>/<proof> (default: this folder's ${PROOF_CONFIG_FILE})`)
|
|
360
|
+
.option('--to <email...>', 'Who to send it to (default: the client’s primary contact; remembered for next time)')
|
|
361
|
+
.option('--message <text>', 'A line for the email, instead of the version’s push note')
|
|
362
|
+
.option('--json', 'Output as JSON')
|
|
363
|
+
.action(runAction(async (arg, opts) => {
|
|
364
|
+
const ref = refOrFail(arg, process.cwd());
|
|
365
|
+
const sent = await requireClient().sendProof(ref.client, ref.proof, { to: opts.to, message: opts.message });
|
|
366
|
+
if (opts.json) {
|
|
367
|
+
console.log(JSON.stringify(sent, null, 2));
|
|
368
|
+
return;
|
|
369
|
+
}
|
|
370
|
+
console.log(`Sent ${ref.client}/${ref.proof} v${sent.version.number} to ${sent.sentTo.join(', ')}.`);
|
|
371
|
+
console.log(`Review link: ${sent.reviewUrl}`);
|
|
372
|
+
// Surfaced rather than swallowed: the version is frozen either way, so
|
|
373
|
+
// "it went out" would be a lie Ashley acts on.
|
|
374
|
+
for (const failure of sent.mailFailures)
|
|
375
|
+
console.error(`Email failed — ${failure}`);
|
|
376
|
+
}));
|
|
377
|
+
proof
|
|
378
|
+
.command('link')
|
|
379
|
+
.description('Show the client’s review link, or replace it so the old one stops working')
|
|
380
|
+
.argument('[proof]', `<client>/<proof> (default: this folder's ${PROOF_CONFIG_FILE})`)
|
|
381
|
+
.option('--rotate', 'Replace the link. The old URL stops working immediately — use after it’s been forwarded somewhere it shouldn’t')
|
|
382
|
+
.option('--expires <date>', 'Stop the link working after this date, or "never" to clear it')
|
|
383
|
+
.option('--access <mode>', `${ACCESS.join(' or ')} — sign-in needs the Proof to be on a site`)
|
|
384
|
+
.option('--json', 'Output as JSON')
|
|
385
|
+
.action(runAction(async (arg, opts) => {
|
|
386
|
+
const ref = refOrFail(arg, process.cwd());
|
|
387
|
+
if (opts.access && !ACCESS.includes(opts.access))
|
|
388
|
+
fail(`--access must be ${ACCESS.join(' or ')}`);
|
|
389
|
+
let expires;
|
|
390
|
+
if (opts.expires !== undefined) {
|
|
391
|
+
if (opts.expires === 'never') {
|
|
392
|
+
expires = null;
|
|
393
|
+
}
|
|
394
|
+
else if (Number.isNaN(new Date(opts.expires).getTime())) {
|
|
395
|
+
fail(`"${opts.expires}" isn't a date. Use YYYY-MM-DD, or "never" to clear it.`);
|
|
396
|
+
}
|
|
397
|
+
else {
|
|
398
|
+
expires = new Date(opts.expires).toISOString();
|
|
399
|
+
}
|
|
400
|
+
}
|
|
401
|
+
const changing = opts.rotate || expires !== undefined || opts.access;
|
|
402
|
+
const client = requireClient();
|
|
403
|
+
const link = changing
|
|
404
|
+
? await client.updateProofLink(ref.client, ref.proof, {
|
|
405
|
+
rotate: opts.rotate,
|
|
406
|
+
expires,
|
|
407
|
+
access: opts.access,
|
|
408
|
+
})
|
|
409
|
+
: await client.getProofLink(ref.client, ref.proof);
|
|
410
|
+
if (opts.json) {
|
|
411
|
+
console.log(JSON.stringify(link, null, 2));
|
|
412
|
+
return;
|
|
413
|
+
}
|
|
414
|
+
if (opts.rotate)
|
|
415
|
+
console.log('Replaced the link — the old one no longer works. Send the new one:');
|
|
416
|
+
console.log(link.url);
|
|
417
|
+
console.log(`Access: ${link.proof.access}${link.expiresAt ? ` · expires ${link.expiresAt}` : ''}`);
|
|
418
|
+
}));
|
|
419
|
+
proof
|
|
420
|
+
.command('close')
|
|
421
|
+
.description('Close a Proof — delivered, or abandoned. It stays readable from its link')
|
|
422
|
+
.argument('[proof]', `<client>/<proof> (default: this folder's ${PROOF_CONFIG_FILE})`)
|
|
423
|
+
.option('--reason <text>', 'Why, e.g. "delivered"')
|
|
424
|
+
.action(runAction(async (arg, opts) => {
|
|
425
|
+
const ref = refOrFail(arg, process.cwd());
|
|
426
|
+
const closed = await requireClient().closeProof(ref.client, ref.proof, opts.reason);
|
|
427
|
+
console.log(`Closed ${ref.client}/${ref.proof}${closed.closedReason ? ` (${closed.closedReason})` : ''}.`);
|
|
428
|
+
}));
|
|
429
|
+
proof
|
|
430
|
+
.command('reopen')
|
|
431
|
+
.description('Reopen a closed Proof, to push and send another version')
|
|
432
|
+
.argument('[proof]', `<client>/<proof> (default: this folder's ${PROOF_CONFIG_FILE})`)
|
|
433
|
+
.action(runAction(async (arg) => {
|
|
434
|
+
const ref = refOrFail(arg, process.cwd());
|
|
435
|
+
const reopened = await requireClient().reopenProof(ref.client, ref.proof);
|
|
436
|
+
console.log(`Reopened ${ref.client}/${ref.proof} — status ${reopened.status}.`);
|
|
437
|
+
}));
|
|
438
|
+
}
|
|
439
|
+
export { versionArg };
|
|
440
|
+
//# sourceMappingURL=proof.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"proof.js","sourceRoot":"","sources":["../../src/commands/proof.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prospect.d.ts","sourceRoot":"","sources":["../../src/commands/prospect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAiB,KAAK,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAKvE,iBAAS,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAE9C;AAKD,iBAAS,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAE1C;AAED,iBAAS,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,IAAI,eAAe,CAEnE;AAED,KAAK,cAAc,GAAG;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAEzF,gHAAgH;AAChH,iBAAS,qBAAqB,CAAC,IAAI,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,cAAc,CAO3F;AAED;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"prospect.d.ts","sourceRoot":"","sources":["../../src/commands/prospect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAiB,KAAK,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAKvE,iBAAS,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAE9C;AAKD,iBAAS,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAE1C;AAED,iBAAS,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,IAAI,eAAe,CAEnE;AAED,KAAK,cAAc,GAAG;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAEzF,gHAAgH;AAChH,iBAAS,qBAAqB,CAAC,IAAI,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,cAAc,CAO3F;AAED;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAyN/D;AAED,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,aAAa,EAAE,qBAAqB,EAAE,CAAC"}
|
|
@@ -62,6 +62,15 @@ export function registerProspectCommands(program) {
|
|
|
62
62
|
nextFollowUp: p.prospecting?.nextFollowUpAt ?? '',
|
|
63
63
|
lastContact: p.warmth.lastContactAt ?? '',
|
|
64
64
|
})), false);
|
|
65
|
+
// Below the table, not as a column: these are sentences, and a column
|
|
66
|
+
// wide enough for one would squeeze everything that tells Ashley who
|
|
67
|
+
// to call. RFC 0029 — context for the call, not a change to the list.
|
|
68
|
+
const withProofs = items.filter((p) => p.proofNote);
|
|
69
|
+
if (withProofs.length > 0) {
|
|
70
|
+
console.log('');
|
|
71
|
+
for (const p of withProofs)
|
|
72
|
+
console.log(`${p.name} — ${p.proofNote}`);
|
|
73
|
+
}
|
|
65
74
|
}));
|
|
66
75
|
prospect
|
|
67
76
|
.command('show')
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prospect.js","sourceRoot":"","sources":["../../src/commands/prospect.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"prospect.js","sourceRoot":"","sources":["../../src/commands/prospect.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAmBpC,wBAAgB,aAAa,IAAI,OAAO,CA2BvC;AAED,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -5,6 +5,7 @@ import { registerSiteCommands } from './commands/site.js';
|
|
|
5
5
|
import { registerContentCommands } from './commands/content.js';
|
|
6
6
|
import { registerSubmissionCommands } from './commands/submission.js';
|
|
7
7
|
import { registerProspectCommands } from './commands/prospect.js';
|
|
8
|
+
import { registerProofCommands } from './commands/proof.js';
|
|
8
9
|
import { registerRequestCommands } from './commands/request.js';
|
|
9
10
|
import { registerSchemaCommands } from './commands/schema.js';
|
|
10
11
|
import { registerBuildCommands } from './commands/build.js';
|
|
@@ -18,12 +19,21 @@ export function createProgram() {
|
|
|
18
19
|
program
|
|
19
20
|
.name('scribe')
|
|
20
21
|
.description('Command-line interface for Scribe CMS')
|
|
21
|
-
.version(version)
|
|
22
|
+
.version(version)
|
|
23
|
+
// Without this, the program's own `-V, --version` swallows `--version` on
|
|
24
|
+
// every subcommand, so `scribe proof feedback --version 1` printed the CLI
|
|
25
|
+
// version and `scribe proof pull --version 1` could never reach v1 at all.
|
|
26
|
+
// Positional options confine program flags to before the subcommand name,
|
|
27
|
+
// which is what makes a subcommand's `--version` reachable while
|
|
28
|
+
// `scribe --version` keeps working. Safe because the program has no other
|
|
29
|
+
// options for anyone to be passing after a subcommand name.
|
|
30
|
+
.enablePositionalOptions();
|
|
22
31
|
registerLoginCommand(program);
|
|
23
32
|
registerSiteCommands(program);
|
|
24
33
|
registerContentCommands(program);
|
|
25
34
|
registerSubmissionCommands(program);
|
|
26
35
|
registerProspectCommands(program);
|
|
36
|
+
registerProofCommands(program);
|
|
27
37
|
registerRequestCommands(program);
|
|
28
38
|
registerSchemaCommands(program);
|
|
29
39
|
registerBuildCommands(program);
|
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,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AACtE,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAE7D,8EAA8E;AAC9E,yEAAyE;AACzE,8EAA8E;AAC9E,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,KAAK,CAC5B,YAAY,CAAC,IAAI,GAAG,CAAC,iBAAiB,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,CAC5C,CAAC;AAEzB,MAAM,UAAU,aAAa;IAC3B,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;IAC9B,OAAO;SACJ,IAAI,CAAC,QAAQ,CAAC;SACd,WAAW,CAAC,uCAAuC,CAAC;SACpD,OAAO,CAAC,OAAO,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AACtE,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAE7D,8EAA8E;AAC9E,yEAAyE;AACzE,8EAA8E;AAC9E,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,KAAK,CAC5B,YAAY,CAAC,IAAI,GAAG,CAAC,iBAAiB,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,CAC5C,CAAC;AAEzB,MAAM,UAAU,aAAa;IAC3B,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;IAC9B,OAAO;SACJ,IAAI,CAAC,QAAQ,CAAC;SACd,WAAW,CAAC,uCAAuC,CAAC;SACpD,OAAO,CAAC,OAAO,CAAC;QACjB,0EAA0E;QAC1E,2EAA2E;QAC3E,2EAA2E;QAC3E,0EAA0E;QAC1E,iEAAiE;QACjE,0EAA0E;QAC1E,4DAA4D;SAC3D,uBAAuB,EAAE,CAAC;IAE7B,oBAAoB,CAAC,OAAO,CAAC,CAAC;IAC9B,oBAAoB,CAAC,OAAO,CAAC,CAAC;IAC9B,uBAAuB,CAAC,OAAO,CAAC,CAAC;IACjC,0BAA0B,CAAC,OAAO,CAAC,CAAC;IACpC,wBAAwB,CAAC,OAAO,CAAC,CAAC;IAClC,qBAAqB,CAAC,OAAO,CAAC,CAAC;IAC/B,uBAAuB,CAAC,OAAO,CAAC,CAAC;IACjC,sBAAsB,CAAC,OAAO,CAAC,CAAC;IAChC,qBAAqB,CAAC,OAAO,CAAC,CAAC;IAC/B,qBAAqB,CAAC,OAAO,CAAC,CAAC;IAE/B,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC"}
|