@doxbrix/doxloop 0.1.3 → 0.1.5

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.
Files changed (55) hide show
  1. package/CHANGELOG.md +39 -0
  2. package/README.md +97 -41
  3. package/assets/doxbrix-preview.css +8 -0
  4. package/dist/agents.d.ts +21 -0
  5. package/dist/agents.d.ts.map +1 -1
  6. package/dist/agents.js +63 -1
  7. package/dist/agents.js.map +1 -1
  8. package/dist/args.d.ts.map +1 -1
  9. package/dist/args.js +2 -1
  10. package/dist/args.js.map +1 -1
  11. package/dist/auth.js +47 -4
  12. package/dist/auth.js.map +1 -1
  13. package/dist/author.d.ts +3 -5
  14. package/dist/author.d.ts.map +1 -1
  15. package/dist/author.js +7 -4
  16. package/dist/author.js.map +1 -1
  17. package/dist/cli.js +346 -72
  18. package/dist/cli.js.map +1 -1
  19. package/dist/doxbrix-markdown.js +39 -1
  20. package/dist/doxbrix-markdown.js.map +1 -1
  21. package/dist/interactive.d.ts +17 -0
  22. package/dist/interactive.d.ts.map +1 -0
  23. package/dist/interactive.js +343 -0
  24. package/dist/interactive.js.map +1 -0
  25. package/dist/preview.d.ts.map +1 -1
  26. package/dist/preview.js +194 -0
  27. package/dist/preview.js.map +1 -1
  28. package/dist/project.d.ts +8 -0
  29. package/dist/project.d.ts.map +1 -1
  30. package/dist/project.js +124 -11
  31. package/dist/project.js.map +1 -1
  32. package/dist/prompts.d.ts +41 -0
  33. package/dist/prompts.d.ts.map +1 -0
  34. package/dist/prompts.js +294 -0
  35. package/dist/prompts.js.map +1 -0
  36. package/dist/settings.d.ts +6 -0
  37. package/dist/settings.d.ts.map +1 -0
  38. package/dist/settings.js +519 -0
  39. package/dist/settings.js.map +1 -0
  40. package/dist/sync.d.ts.map +1 -1
  41. package/dist/sync.js +46 -0
  42. package/dist/sync.js.map +1 -1
  43. package/dist/types.d.ts +18 -1
  44. package/dist/types.d.ts.map +1 -1
  45. package/docs/agent-compatibility.md +5 -0
  46. package/docs/ci-and-automation.md +10 -0
  47. package/docs/doxbrix-http-api.md +2 -1
  48. package/docs/project-format.md +13 -1
  49. package/docs/security-model.md +4 -2
  50. package/package.json +1 -1
  51. package/skills/doxloop-authoring/references/project-format.md +20 -0
  52. package/dist/public-deploy-confirmation.d.ts +0 -5
  53. package/dist/public-deploy-confirmation.d.ts.map +0 -1
  54. package/dist/public-deploy-confirmation.js +0 -22
  55. package/dist/public-deploy-confirmation.js.map +0 -1
@@ -0,0 +1,294 @@
1
+ import { createInterface } from 'node:readline/promises';
2
+ import { styleText } from 'node:util';
3
+ import { booleanFlag } from './args.js';
4
+ import { DoxloopError } from './errors.js';
5
+ const CANCEL_EXIT_CODE = 130;
6
+ function defaultIo() {
7
+ return { input: process.stdin, output: process.stdout };
8
+ }
9
+ export function promptCanceled() {
10
+ return new DoxloopError('Canceled.', CANCEL_EXIT_CODE);
11
+ }
12
+ export function isInteractive(args, io = defaultIo()) {
13
+ return (io.input.isTTY === true &&
14
+ io.output.isTTY === true &&
15
+ !booleanFlag(args, 'yes') &&
16
+ (process.env.CI === undefined || process.env.CI === ''));
17
+ }
18
+ function color(io, style, text) {
19
+ if (io.output.isTTY !== true || process.env.NO_COLOR)
20
+ return text;
21
+ return styleText(style, text);
22
+ }
23
+ export function note(io, lines) {
24
+ for (const line of lines.split('\n')) {
25
+ io.output.write(`${color(io, 'dim', '│')} ${line}\n`);
26
+ }
27
+ }
28
+ export function heading(io, text) {
29
+ io.output.write(`\n ${color(io, 'bold', text)}\n\n`);
30
+ }
31
+ function renderAnswered(io, message, answer) {
32
+ io.output.write(`${color(io, 'green', '◆')} ${message} ${color(io, 'dim', '·')} ${color(io, 'cyan', answer)}\n`);
33
+ }
34
+ // Reads lines through one readline interface per prompt, buffering lines that
35
+ // arrive between questions so piped and scripted input is never dropped.
36
+ class LineReader {
37
+ queue = [];
38
+ pending;
39
+ canceled = false;
40
+ prompt;
41
+ cancel;
42
+ constructor(io) {
43
+ this.prompt = createInterface({ input: io.input, output: io.output });
44
+ this.prompt.on('line', (line) => {
45
+ if (this.pending) {
46
+ const waiting = this.pending;
47
+ this.pending = undefined;
48
+ waiting.resolve(line);
49
+ }
50
+ else {
51
+ this.queue.push(line);
52
+ }
53
+ });
54
+ this.cancel = () => {
55
+ this.canceled = true;
56
+ if (this.pending) {
57
+ const waiting = this.pending;
58
+ this.pending = undefined;
59
+ waiting.reject(promptCanceled());
60
+ }
61
+ };
62
+ this.prompt.on('SIGINT', this.cancel);
63
+ this.prompt.on('close', this.cancel);
64
+ }
65
+ next(io, query) {
66
+ io.output.write(query);
67
+ const buffered = this.queue.shift();
68
+ if (buffered !== undefined)
69
+ return Promise.resolve(buffered);
70
+ if (this.canceled)
71
+ return Promise.reject(promptCanceled());
72
+ return new Promise((resolve, reject) => {
73
+ this.pending = { resolve, reject };
74
+ });
75
+ }
76
+ close() {
77
+ // Keep readline's own `close` listeners intact. They detach its input and
78
+ // keypress handlers; removing all listeners here leaves an old interface
79
+ // echoing every subsequent prompt, so typed characters appear repeatedly.
80
+ this.prompt.removeListener('close', this.cancel);
81
+ this.prompt.close();
82
+ }
83
+ }
84
+ export async function promptText(options) {
85
+ const io = options.io ?? defaultIo();
86
+ const suffix = options.initial
87
+ ? ` ${color(io, 'dim', `(${options.initial})`)}`
88
+ : options.allowEmpty
89
+ ? ` ${color(io, 'dim', '(Enter to skip)')}`
90
+ : '';
91
+ io.output.write(`${color(io, 'cyan', '◆')} ${options.message}${suffix}\n`);
92
+ if (options.hint)
93
+ note(io, color(io, 'dim', options.hint));
94
+ const reader = new LineReader(io);
95
+ try {
96
+ while (true) {
97
+ const raw = await reader.next(io, `${color(io, 'dim', '│')} `);
98
+ const value = raw.trim() || options.initial?.trim() || '';
99
+ if (value === '' && !options.allowEmpty) {
100
+ note(io, color(io, 'yellow', 'A value is required.'));
101
+ continue;
102
+ }
103
+ const problem = value === '' ? undefined : await options.validate?.(value);
104
+ if (problem) {
105
+ note(io, color(io, 'yellow', problem));
106
+ continue;
107
+ }
108
+ return value;
109
+ }
110
+ }
111
+ finally {
112
+ reader.close();
113
+ }
114
+ }
115
+ export async function promptConfirm(options) {
116
+ const io = options.io ?? defaultIo();
117
+ const fallback = options.initial ?? true;
118
+ const marks = fallback ? 'Y/n' : 'y/N';
119
+ const reader = new LineReader(io);
120
+ try {
121
+ while (true) {
122
+ const raw = (await reader.next(io, `${color(io, 'cyan', '◆')} ${options.message} ${color(io, 'dim', `(${marks})`)} `))
123
+ .trim()
124
+ .toLowerCase();
125
+ if (raw === '')
126
+ return fallback;
127
+ if (raw === 'y' || raw === 'yes')
128
+ return true;
129
+ if (raw === 'n' || raw === 'no')
130
+ return false;
131
+ note(io, color(io, 'yellow', 'Answer y or n.'));
132
+ }
133
+ }
134
+ finally {
135
+ reader.close();
136
+ }
137
+ }
138
+ export async function promptSelect(options) {
139
+ const io = options.io ?? defaultIo();
140
+ const enabled = options.choices.filter((choice) => !choice.disabled);
141
+ if (enabled.length === 0) {
142
+ throw new DoxloopError('No selectable choices are available.');
143
+ }
144
+ if (typeof io.input.setRawMode !== 'function' || io.input.isTTY !== true) {
145
+ return numberedSelect(io, options);
146
+ }
147
+ return rawSelect(io, options);
148
+ }
149
+ function choiceLine(io, choice, active) {
150
+ const marker = choice.disabled
151
+ ? color(io, 'dim', '○')
152
+ : active
153
+ ? color(io, 'cyan', '●')
154
+ : '○';
155
+ const label = choice.disabled
156
+ ? color(io, 'dim', choice.label)
157
+ : active
158
+ ? color(io, 'cyan', choice.label)
159
+ : choice.label;
160
+ const hint = choice.disabled ?? choice.hint;
161
+ return `${color(io, 'dim', '│')} ${marker} ${label}${hint ? ` ${color(io, 'dim', hint)}` : ''}`;
162
+ }
163
+ async function rawSelect(io, options) {
164
+ const { choices } = options;
165
+ let index = firstEnabled(choices, options.initialIndex ?? 0);
166
+ const renderedLines = choices.length + 2;
167
+ const render = (first) => {
168
+ if (!first)
169
+ io.output.write(`\u001b[${renderedLines}A`);
170
+ io.output.write(`\u001b[0J${color(io, 'cyan', '◆')} ${options.message}\n`);
171
+ for (const [position, choice] of choices.entries()) {
172
+ io.output.write(`${choiceLine(io, choice, position === index)}\n`);
173
+ }
174
+ io.output.write(`${color(io, 'dim', '│')} ${color(io, 'dim', '↑/↓ move · Enter select · Esc cancel')}\n`);
175
+ };
176
+ render(true);
177
+ const input = io.input;
178
+ const wasRaw = input.isRaw === true;
179
+ input.setRawMode?.(true);
180
+ input.resume?.();
181
+ try {
182
+ return await new Promise((resolveChoice, reject) => {
183
+ let settled = false;
184
+ const move = (step) => {
185
+ for (let hops = 0; hops < choices.length; hops += 1) {
186
+ index = (index + step + choices.length) % choices.length;
187
+ if (!choices[index]?.disabled)
188
+ break;
189
+ }
190
+ render(false);
191
+ };
192
+ const handleKey = (key) => {
193
+ if (key === '\u0003' || key === '\u001b') {
194
+ finish();
195
+ reject(promptCanceled());
196
+ return;
197
+ }
198
+ if (key === '\u001b[A' || key === 'k')
199
+ move(-1);
200
+ else if (key === '\u001b[B' || key === 'j')
201
+ move(1);
202
+ else if (key === '\r' || key === '\n') {
203
+ const chosen = choices[index];
204
+ if (!chosen || chosen.disabled)
205
+ return;
206
+ finish();
207
+ io.output.write(`\u001b[${renderedLines}A\u001b[0J`);
208
+ renderAnswered(io, options.message, chosen.label);
209
+ resolveChoice(chosen.value);
210
+ }
211
+ else if (/^[1-9]$/.test(key)) {
212
+ const target = Number(key) - 1;
213
+ if (target < choices.length && !choices[target]?.disabled) {
214
+ index = target;
215
+ render(false);
216
+ }
217
+ }
218
+ };
219
+ // One chunk can hold several keystrokes (paste, scripted input); split
220
+ // it into keys, keeping three-byte arrow sequences together.
221
+ const onData = (data) => {
222
+ const chunk = data.toString('utf8');
223
+ let position = 0;
224
+ while (position < chunk.length && !settled) {
225
+ const arrow = chunk.slice(position, position + 3);
226
+ if (arrow === '\u001b[A' || arrow === '\u001b[B') {
227
+ handleKey(arrow);
228
+ position += 3;
229
+ }
230
+ else {
231
+ handleKey(chunk[position] ?? '');
232
+ position += 1;
233
+ }
234
+ }
235
+ };
236
+ const onEnd = () => {
237
+ finish();
238
+ reject(promptCanceled());
239
+ };
240
+ const finish = () => {
241
+ if (settled)
242
+ return;
243
+ settled = true;
244
+ input.removeListener('data', onData);
245
+ input.removeListener('end', onEnd);
246
+ input.removeListener('close', onEnd);
247
+ if (!wasRaw)
248
+ input.setRawMode?.(false);
249
+ input.pause?.();
250
+ };
251
+ input.on('data', onData);
252
+ input.once('end', onEnd);
253
+ input.once('close', onEnd);
254
+ });
255
+ }
256
+ finally {
257
+ if (!wasRaw)
258
+ input.setRawMode?.(false);
259
+ }
260
+ }
261
+ async function numberedSelect(io, options) {
262
+ const { choices } = options;
263
+ const initial = firstEnabled(choices, options.initialIndex ?? 0);
264
+ io.output.write(`${color(io, 'cyan', '◆')} ${options.message}\n`);
265
+ for (const [position, choice] of choices.entries()) {
266
+ const hint = choice.disabled ?? choice.hint;
267
+ io.output.write(`${color(io, 'dim', '│')} ${position + 1}. ${choice.label}${hint ? ` ${color(io, 'dim', hint)}` : ''}\n`);
268
+ }
269
+ const reader = new LineReader(io);
270
+ try {
271
+ while (true) {
272
+ const raw = (await reader.next(io, `${color(io, 'dim', '│')} Choose 1-${choices.length} ${color(io, 'dim', `(${initial + 1})`)}: `)).trim();
273
+ const position = raw === '' ? initial : Number(raw) - 1;
274
+ const chosen = Number.isInteger(position) ? choices[position] : undefined;
275
+ if (chosen && !chosen.disabled) {
276
+ renderAnswered(io, options.message, chosen.label);
277
+ return chosen.value;
278
+ }
279
+ note(io, color(io, 'yellow', `Enter a number between 1 and ${choices.length}.`));
280
+ }
281
+ }
282
+ finally {
283
+ reader.close();
284
+ }
285
+ }
286
+ function firstEnabled(choices, start) {
287
+ for (let offset = 0; offset < choices.length; offset += 1) {
288
+ const index = (start + offset) % choices.length;
289
+ if (!choices[index]?.disabled)
290
+ return index;
291
+ }
292
+ return 0;
293
+ }
294
+ //# sourceMappingURL=prompts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompts.js","sourceRoot":"","sources":["../src/prompts.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import { type PromptIo } from './prompts.js';
2
+ import type { DeploymentConfig, DoxloopProject } from './types.js';
3
+ export declare function runSettingsWizard(root: string, cwd: string, io?: PromptIo): Promise<void>;
4
+ export declare function formatProjectSettings(root: string, project: DoxloopProject): string;
5
+ export declare function effectiveDeployment(project: DoxloopProject, fallbackApiUrl?: string): Required<DeploymentConfig>;
6
+ //# sourceMappingURL=settings.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"settings.d.ts","sourceRoot":"","sources":["../src/settings.ts"],"names":[],"mappings":"AAYA,OAAO,EAML,KAAK,QAAQ,EACd,MAAM,cAAc,CAAA;AACrB,OAAO,KAAK,EAGV,gBAAgB,EAEhB,cAAc,EAEf,MAAM,YAAY,CAAA;AAcnB,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,MAAM,EACX,EAAE,GAAE,QAA2D,GAC9D,OAAO,CAAC,IAAI,CAAC,CAyCf;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,GAAG,MAAM,CAcnF;AAED,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,cAAc,EACvB,cAAc,CAAC,EAAE,MAAM,GACtB,QAAQ,CAAC,gBAAgB,CAAC,CAO5B"}