@doxbrix/doxloop 0.1.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.
Files changed (152) hide show
  1. package/CHANGELOG.md +34 -0
  2. package/LICENSE +93 -0
  3. package/README.md +576 -0
  4. package/SECURITY.md +15 -0
  5. package/assets/brand/README.md +8 -0
  6. package/assets/brand/doxloop-favicon.png +0 -0
  7. package/assets/brand/doxloop-logo-dark.png +0 -0
  8. package/assets/brand/doxloop-logo-light.png +0 -0
  9. package/assets/doxbrix-preview.css +6672 -0
  10. package/dist/agents.d.ts +26 -0
  11. package/dist/agents.d.ts.map +1 -0
  12. package/dist/agents.js +258 -0
  13. package/dist/agents.js.map +1 -0
  14. package/dist/args.d.ts +8 -0
  15. package/dist/args.d.ts.map +1 -0
  16. package/dist/args.js +95 -0
  17. package/dist/args.js.map +1 -0
  18. package/dist/artifact-deploy.d.ts +8 -0
  19. package/dist/artifact-deploy.d.ts.map +1 -0
  20. package/dist/artifact-deploy.js +240 -0
  21. package/dist/artifact-deploy.js.map +1 -0
  22. package/dist/auth.d.ts +17 -0
  23. package/dist/auth.d.ts.map +1 -0
  24. package/dist/auth.js +245 -0
  25. package/dist/auth.js.map +1 -0
  26. package/dist/author.d.ts +30 -0
  27. package/dist/author.d.ts.map +1 -0
  28. package/dist/author.js +195 -0
  29. package/dist/author.js.map +1 -0
  30. package/dist/capture.d.ts +10 -0
  31. package/dist/capture.d.ts.map +1 -0
  32. package/dist/capture.js +299 -0
  33. package/dist/capture.js.map +1 -0
  34. package/dist/cli.d.ts +3 -0
  35. package/dist/cli.d.ts.map +1 -0
  36. package/dist/cli.js +558 -0
  37. package/dist/cli.js.map +1 -0
  38. package/dist/deploy.d.ts +22 -0
  39. package/dist/deploy.d.ts.map +1 -0
  40. package/dist/deploy.js +136 -0
  41. package/dist/deploy.js.map +1 -0
  42. package/dist/doctor.d.ts +18 -0
  43. package/dist/doctor.d.ts.map +1 -0
  44. package/dist/doctor.js +222 -0
  45. package/dist/doctor.js.map +1 -0
  46. package/dist/doxbrix-markdown.d.ts +20 -0
  47. package/dist/doxbrix-markdown.d.ts.map +1 -0
  48. package/dist/doxbrix-markdown.js +873 -0
  49. package/dist/doxbrix-markdown.js.map +1 -0
  50. package/dist/errors.d.ts +8 -0
  51. package/dist/errors.d.ts.map +1 -0
  52. package/dist/errors.js +15 -0
  53. package/dist/errors.js.map +1 -0
  54. package/dist/fs.d.ts +6 -0
  55. package/dist/fs.d.ts.map +1 -0
  56. package/dist/fs.js +77 -0
  57. package/dist/fs.js.map +1 -0
  58. package/dist/generator-api.d.ts +69 -0
  59. package/dist/generator-api.d.ts.map +1 -0
  60. package/dist/generator-api.js +6 -0
  61. package/dist/generator-api.js.map +1 -0
  62. package/dist/generator-manager.d.ts +13 -0
  63. package/dist/generator-manager.d.ts.map +1 -0
  64. package/dist/generator-manager.js +155 -0
  65. package/dist/generator-manager.js.map +1 -0
  66. package/dist/generator-runtime.d.ts +24 -0
  67. package/dist/generator-runtime.d.ts.map +1 -0
  68. package/dist/generator-runtime.js +265 -0
  69. package/dist/generator-runtime.js.map +1 -0
  70. package/dist/generators.d.ts +21 -0
  71. package/dist/generators.d.ts.map +1 -0
  72. package/dist/generators.js +202 -0
  73. package/dist/generators.js.map +1 -0
  74. package/dist/preview.d.ts +21 -0
  75. package/dist/preview.d.ts.map +1 -0
  76. package/dist/preview.js +691 -0
  77. package/dist/preview.js.map +1 -0
  78. package/dist/progress.d.ts +19 -0
  79. package/dist/progress.d.ts.map +1 -0
  80. package/dist/progress.js +70 -0
  81. package/dist/progress.js.map +1 -0
  82. package/dist/project.d.ts +37 -0
  83. package/dist/project.d.ts.map +1 -0
  84. package/dist/project.js +499 -0
  85. package/dist/project.js.map +1 -0
  86. package/dist/sync.d.ts +7 -0
  87. package/dist/sync.d.ts.map +1 -0
  88. package/dist/sync.js +221 -0
  89. package/dist/sync.js.map +1 -0
  90. package/dist/types.d.ts +141 -0
  91. package/dist/types.d.ts.map +1 -0
  92. package/dist/types.js +2 -0
  93. package/dist/types.js.map +1 -0
  94. package/dist/validation.d.ts +4 -0
  95. package/dist/validation.d.ts.map +1 -0
  96. package/dist/validation.js +478 -0
  97. package/dist/validation.js.map +1 -0
  98. package/dist/version.d.ts +3 -0
  99. package/dist/version.d.ts.map +1 -0
  100. package/dist/version.js +5 -0
  101. package/dist/version.js.map +1 -0
  102. package/docs/agent-compatibility.md +41 -0
  103. package/docs/ci-and-automation.md +56 -0
  104. package/docs/doxbrix-http-api.md +182 -0
  105. package/docs/generator-authoring.md +59 -0
  106. package/docs/generator-selection.md +25 -0
  107. package/docs/project-format.md +97 -0
  108. package/docs/security-model.md +90 -0
  109. package/docs/troubleshooting.md +103 -0
  110. package/package.json +87 -0
  111. package/skills/doxloop-authoring/SKILL.md +381 -0
  112. package/skills/doxloop-authoring/agents/openai.yaml +4 -0
  113. package/skills/doxloop-authoring/assets/screenshot-highlight.js +83 -0
  114. package/skills/doxloop-authoring/references/accessibility.md +54 -0
  115. package/skills/doxloop-authoring/references/audience-flavors.md +93 -0
  116. package/skills/doxloop-authoring/references/branding.md +50 -0
  117. package/skills/doxloop-authoring/references/documentation-types.md +236 -0
  118. package/skills/doxloop-authoring/references/domain-ai-ml.md +67 -0
  119. package/skills/doxloop-authoring/references/domain-api-platform.md +68 -0
  120. package/skills/doxloop-authoring/references/domain-cli-tool.md +65 -0
  121. package/skills/doxloop-authoring/references/domain-data-platform.md +65 -0
  122. package/skills/doxloop-authoring/references/domain-developer-library.md +63 -0
  123. package/skills/doxloop-authoring/references/domain-ecommerce.md +63 -0
  124. package/skills/doxloop-authoring/references/domain-infrastructure-devops.md +67 -0
  125. package/skills/doxloop-authoring/references/domain-payments-fintech.md +69 -0
  126. package/skills/doxloop-authoring/references/domain-saas.md +71 -0
  127. package/skills/doxloop-authoring/references/domain-security-identity.md +65 -0
  128. package/skills/doxloop-authoring/references/editorial-style.md +105 -0
  129. package/skills/doxloop-authoring/references/examples-and-evidence.md +71 -0
  130. package/skills/doxloop-authoring/references/navigation-architecture.md +152 -0
  131. package/skills/doxloop-authoring/references/project-format.md +119 -0
  132. package/skills/doxloop-authoring/references/quality.md +122 -0
  133. package/skills/doxloop-authoring/references/reference-sites.md +207 -0
  134. package/skills/doxloop-authoring/references/screenshots.md +251 -0
  135. package/skills/doxloop-authoring/references/template-routing.md +94 -0
  136. package/skills/doxloop-authoring/references/type-administrator-guide.md +59 -0
  137. package/skills/doxloop-authoring/references/type-api-reference.md +66 -0
  138. package/skills/doxloop-authoring/references/type-architecture-concepts.md +61 -0
  139. package/skills/doxloop-authoring/references/type-cli-manual.md +61 -0
  140. package/skills/doxloop-authoring/references/type-deployment-operations.md +64 -0
  141. package/skills/doxloop-authoring/references/type-developer-portal.md +69 -0
  142. package/skills/doxloop-authoring/references/type-getting-started.md +59 -0
  143. package/skills/doxloop-authoring/references/type-integration-guide.md +59 -0
  144. package/skills/doxloop-authoring/references/type-migration-release.md +66 -0
  145. package/skills/doxloop-authoring/references/type-sdk-guide.md +63 -0
  146. package/skills/doxloop-authoring/references/type-troubleshooting-kb.md +63 -0
  147. package/skills/doxloop-authoring/references/type-user-guide.md +59 -0
  148. package/skills/doxloop-doxbrix/SKILL.md +83 -0
  149. package/skills/doxloop-doxbrix/agents/openai.yaml +4 -0
  150. package/skills/doxloop-doxbrix/references/api-endpoints.md +128 -0
  151. package/skills/doxloop-doxbrix/references/components.md +137 -0
  152. package/skills/doxloop-doxbrix/references/manifest.md +117 -0
package/dist/cli.js ADDED
@@ -0,0 +1,558 @@
1
+ #!/usr/bin/env node
2
+ import { resolve } from 'node:path';
3
+ import { assertAllowedFlags, booleanFlag, flag, flags, numberFlag, parseArgs, } from './args.js';
4
+ import { chooseAgent, installSkill, parseAgent, skillStatus } from './agents.js';
5
+ import { login, logout, whoami } from './auth.js';
6
+ import { parseReasoning, resolveScreenshotIntent, runAuthor, } from './author.js';
7
+ import { capture } from './capture.js';
8
+ import { deploy } from './deploy.js';
9
+ import { formatDoctorReport, runDoctor } from './doctor.js';
10
+ import { DoxloopError, UsageError } from './errors.js';
11
+ import { addGenerator, diagnoseGenerator, formatGeneratorInfo, formatGeneratorList, removeGenerator, } from './generator-manager.js';
12
+ import { GENERATOR_CATALOG, parseGenerator } from './generators.js';
13
+ import { addDesignReferences, findProjectRoot, loadProject, parseDesignReference, parseSource, resolveSeparateProjectLayout, scaffoldProject, validateProjectSourceBoundaries, } from './project.js';
14
+ import { startPreview } from './preview.js';
15
+ import { formatValidation, validateProject } from './validation.js';
16
+ import { VERSION } from './version.js';
17
+ async function main() {
18
+ const args = parseArgs(process.argv.slice(2));
19
+ validateCommandArguments(args);
20
+ if (booleanFlag(args, 'version', 'v')) {
21
+ process.stdout.write(`${VERSION}\n`);
22
+ return 0;
23
+ }
24
+ if (args.command === undefined || booleanFlag(args, 'help', 'h')) {
25
+ process.stdout.write(help(args.command));
26
+ return 0;
27
+ }
28
+ const cwd = resolve(flag(args, 'cwd') ?? process.cwd());
29
+ switch (args.command) {
30
+ case 'init':
31
+ return initCommand(args, cwd);
32
+ case 'agent':
33
+ return agentCommand(args, cwd);
34
+ case 'generator':
35
+ return generatorCommand(args, cwd);
36
+ case 'doctor': {
37
+ const source = flag(args, 'source');
38
+ const output = flag(args, 'output');
39
+ const selectedAgent = parseAgent(flag(args, 'agent'));
40
+ const report = await runDoctor({
41
+ cwd,
42
+ ...(source ? { source } : {}),
43
+ ...(output ? { output } : {}),
44
+ ...(selectedAgent ? { agent: selectedAgent } : {}),
45
+ });
46
+ process.stdout.write(`${formatDoctorReport(report)}\n`);
47
+ return report.ready ? 0 : 1;
48
+ }
49
+ case 'create':
50
+ if (flag(args, 'source') !== undefined || flag(args, 'output') !== undefined) {
51
+ return createProjectCommand(args, cwd);
52
+ }
53
+ return authorCommand(args, cwd, 'create');
54
+ case 'update':
55
+ return authorCommand(args, cwd, 'update');
56
+ case 'review': {
57
+ return authorCommand(args, cwd, 'review');
58
+ }
59
+ case 'capture': {
60
+ const root = await findProjectRoot(cwd);
61
+ await capture({ root, urls: args.positionals });
62
+ return 0;
63
+ }
64
+ case 'test': {
65
+ const root = await findProjectRoot(cwd);
66
+ const result = await validateProject(root);
67
+ const format = outputFormat(flag(args, 'format'));
68
+ process.stdout.write(format === 'json'
69
+ ? `${JSON.stringify(result, null, 2)}\n`
70
+ : `${formatValidation(result)}\n`);
71
+ return result.errors > 0 ? 1 : 0;
72
+ }
73
+ case 'status':
74
+ return statusCommand(cwd, outputFormat(flag(args, 'format')));
75
+ case 'preview': {
76
+ const root = await findProjectRoot(cwd);
77
+ await startPreview({
78
+ root,
79
+ host: flag(args, 'host') ?? '127.0.0.1',
80
+ port: numberFlag(args, 'port', 4321),
81
+ open: booleanFlag(args, 'open'),
82
+ });
83
+ return 0;
84
+ }
85
+ case 'login':
86
+ {
87
+ const apiOverride = flag(args, 'api-url');
88
+ const token = flag(args, 'token');
89
+ await login({
90
+ ...(apiOverride ? { apiUrl: apiOverride } : {}),
91
+ ...(token ? { token } : {}),
92
+ });
93
+ }
94
+ return 0;
95
+ case 'logout':
96
+ await logout();
97
+ process.stdout.write('Signed out of Doxbrix.\n');
98
+ return 0;
99
+ case 'whoami':
100
+ await whoami(flag(args, 'api-url'));
101
+ return 0;
102
+ case 'deploy': {
103
+ const root = await findProjectRoot(cwd);
104
+ const name = flag(args, 'name');
105
+ const slug = flag(args, 'slug');
106
+ const apiOverride = flag(args, 'api-url');
107
+ await deploy({
108
+ root,
109
+ ...(name ? { name } : {}),
110
+ ...(slug ? { slug } : {}),
111
+ dryRun: booleanFlag(args, 'dry-run'),
112
+ ...(apiOverride ? { apiUrl: apiOverride } : {}),
113
+ });
114
+ return 0;
115
+ }
116
+ default:
117
+ throw new UsageError(`Unknown command "${args.command}". Run \`doxloop --help\` for available commands.`);
118
+ }
119
+ }
120
+ async function initCommand(args, cwd) {
121
+ const directory = args.positionals[0];
122
+ if (!directory)
123
+ throw new UsageError('Usage: doxloop init <directory> [--source name=path]');
124
+ if (args.positionals.length > 1) {
125
+ throw new UsageError('The init command accepts one destination directory.');
126
+ }
127
+ const sources = flags(args, 'source').map(parseSource);
128
+ const designReferences = flags(args, 'reference').map(parseDesignReference);
129
+ const title = flag(args, 'title');
130
+ const generator = parseGenerator(flag(args, 'generator'));
131
+ const projectRoot = resolve(cwd, directory);
132
+ await validateProjectSourceBoundaries(projectRoot, sources);
133
+ const root = await scaffoldProject({
134
+ directory: projectRoot,
135
+ ...(title ? { title } : {}),
136
+ sources,
137
+ designReferences,
138
+ ...(generator ? { generator } : {}),
139
+ });
140
+ const installs = await installSkill({ root });
141
+ process.stdout.write(`Created Doxloop project at ${root}\n`);
142
+ for (const install of installs) {
143
+ process.stdout.write(`${install.action}: ${install.path}\n`);
144
+ }
145
+ process.stdout.write(`\nNext:\n cd ${directory}\n doxloop create\n doxloop preview --open\n doxloop test\n`);
146
+ return 0;
147
+ }
148
+ async function createProjectCommand(args, cwd) {
149
+ const source = flag(args, 'source');
150
+ const output = flag(args, 'output');
151
+ if (!source || !output) {
152
+ throw new UsageError('Creating a new documentation project requires both `--source <product-directory>` and `--output <documentation-directory>`.');
153
+ }
154
+ if (flags(args, 'source').length > 1 || flags(args, 'output').length > 1) {
155
+ throw new UsageError('The first-run create command accepts one source and one output directory.');
156
+ }
157
+ const layout = await resolveSeparateProjectLayout({ cwd, source, output });
158
+ const requestedAgent = parseAgent(flag(args, 'agent'));
159
+ const print = booleanFlag(args, 'print');
160
+ const selectedAgent = print ? requestedAgent : (await chooseAgent(requestedAgent)).name;
161
+ const designReferences = flags(args, 'reference').map(parseDesignReference);
162
+ const model = flag(args, 'model');
163
+ const reasoning = parseReasoning(flag(args, 'reasoning'));
164
+ const screenshots = screenshotIntent(args);
165
+ if (reasoning && selectedAgent && selectedAgent !== 'codex') {
166
+ throw new DoxloopError(`--reasoning is only supported with Codex. Configure the reasoning behavior of ${selectedAgent} in its own settings.`, 2);
167
+ }
168
+ process.stdout.write(`Welcome to Doxloop\n\nProduct source:\n ${layout.sourceRoot}\n Read-only — product files will not be changed or deployed.\n\nDocumentation project:\n ${layout.projectRoot}\n Only this project can be previewed or deployed.\n\n`);
169
+ const root = await scaffoldProject({
170
+ directory: layout.projectRoot,
171
+ sources: [layout.sourceBinding],
172
+ designReferences,
173
+ });
174
+ if (print) {
175
+ await installSkill({
176
+ root,
177
+ ...(selectedAgent ? { agent: selectedAgent } : {}),
178
+ });
179
+ }
180
+ const result = await runAuthor({
181
+ root,
182
+ mode: 'create',
183
+ ...(selectedAgent ? { agent: selectedAgent } : {}),
184
+ ...(model ? { model } : {}),
185
+ ...(reasoning ? { reasoning } : {}),
186
+ screenshots,
187
+ print,
188
+ ...(args.positionals.length > 0
189
+ ? { request: args.positionals.join(' ') }
190
+ : {}),
191
+ });
192
+ if (result === 0 && !print) {
193
+ const validation = await validateProject(root);
194
+ process.stdout.write(`\nDocumentation created successfully.\n\nPages created: ${validation.pages.length}\nDocumentation project: ${root}\nProduct source files included in deployment: 0\n\nPreview the documentation:\n cd ${root}\n doxloop preview --open\n\nWhen the product changes:\n cd ${root}\n doxloop update\n`);
195
+ }
196
+ return result;
197
+ }
198
+ async function authorCommand(args, cwd, mode) {
199
+ const root = await findProjectRoot(cwd);
200
+ if (mode !== 'review') {
201
+ const project = await loadProject(root);
202
+ await validateProjectSourceBoundaries(root, project.sources);
203
+ }
204
+ const selectedAgent = parseAgent(flag(args, 'agent'));
205
+ const request = args.positionals.join(' ') || undefined;
206
+ const designReferences = flags(args, 'reference').map(parseDesignReference);
207
+ if (mode !== 'review')
208
+ await addDesignReferences(root, designReferences);
209
+ const model = flag(args, 'model');
210
+ const reasoning = parseReasoning(flag(args, 'reasoning'));
211
+ const screenshots = screenshotIntent(args);
212
+ return runAuthor({
213
+ root,
214
+ mode,
215
+ ...(selectedAgent ? { agent: selectedAgent } : {}),
216
+ ...(model ? { model } : {}),
217
+ ...(reasoning ? { reasoning } : {}),
218
+ screenshots,
219
+ print: booleanFlag(args, 'print'),
220
+ ...(request || (mode === 'review' && designReferences.length > 0)
221
+ ? {
222
+ request: [
223
+ request,
224
+ ...(mode === 'review'
225
+ ? designReferences.map((reference) => `Use ${reference.url} as an external documentation design reference for this read-only review.`)
226
+ : []),
227
+ ]
228
+ .filter(Boolean)
229
+ .join('\n'),
230
+ }
231
+ : {}),
232
+ });
233
+ }
234
+ async function agentCommand(args, cwd) {
235
+ const action = args.positionals[0];
236
+ if (!action || !['setup', 'status', 'update'].includes(action)) {
237
+ throw new UsageError('Usage: doxloop agent <setup|status|update> [--agent <name>]');
238
+ }
239
+ const root = await findProjectRoot(cwd);
240
+ if (action === 'status') {
241
+ for (const item of await skillStatus(root)) {
242
+ process.stdout.write(`${item.status.padEnd(8)} ${item.path}\n`);
243
+ }
244
+ return 0;
245
+ }
246
+ const selected = parseAgent(flag(args, 'agent'));
247
+ const results = await installSkill({
248
+ root,
249
+ ...(selected ? { agent: selected } : {}),
250
+ replace: action === 'update',
251
+ });
252
+ for (const item of results)
253
+ process.stdout.write(`${item.action}: ${item.path}\n`);
254
+ return 0;
255
+ }
256
+ async function generatorCommand(args, cwd) {
257
+ const action = args.positionals[0];
258
+ if (!action || !['list', 'add', 'remove', 'info', 'doctor'].includes(action)) {
259
+ throw new UsageError('Usage: doxloop generator <list|add|remove|info|doctor> [generator]');
260
+ }
261
+ if (action === 'list') {
262
+ process.stdout.write(`${await formatGeneratorList(cwd)}\n`);
263
+ return 0;
264
+ }
265
+ if (action === 'doctor') {
266
+ process.stdout.write(`${await diagnoseGenerator(cwd)}\n`);
267
+ return 0;
268
+ }
269
+ const generator = args.positionals[1];
270
+ if (!generator) {
271
+ throw new UsageError(`Usage: doxloop generator ${action} <generator>`);
272
+ }
273
+ if (args.positionals.length > 2) {
274
+ throw new UsageError(`The generator ${action} command accepts one generator name.`);
275
+ }
276
+ if (action === 'add') {
277
+ await addGenerator(cwd, generator);
278
+ return 0;
279
+ }
280
+ if (action === 'remove') {
281
+ await removeGenerator(cwd, generator);
282
+ return 0;
283
+ }
284
+ process.stdout.write(`${await formatGeneratorInfo(cwd, generator)}\n`);
285
+ return 0;
286
+ }
287
+ async function statusCommand(cwd, format) {
288
+ const root = await findProjectRoot(cwd);
289
+ const project = await loadProject(root);
290
+ const result = await validateProject(root);
291
+ if (format === 'json') {
292
+ process.stdout.write(`${JSON.stringify({
293
+ title: project.title,
294
+ root,
295
+ generator: project.generator,
296
+ pages: result.pages.length,
297
+ sources: project.sources,
298
+ designReferences: project.designReferences,
299
+ ...(project.application ? { application: project.application } : {}),
300
+ errors: result.errors,
301
+ warnings: result.warnings,
302
+ }, null, 2)}\n`);
303
+ }
304
+ else {
305
+ process.stdout.write(`${project.title}\nRoot: ${root}\nGenerator: ${project.generator}\nPages: ${result.pages.length}\nSources: ${project.sources.length}\nDesign references: ${project.designReferences.length}\nApplication screenshots: ${project.application ? `${project.application.screenshots?.policy ?? 'requested'} (${project.application.baseUrl})` : 'not configured'}\nErrors: ${result.errors}\nWarnings: ${result.warnings}\n`);
306
+ for (const source of project.sources) {
307
+ process.stdout.write(`source ${source.name}: ${source.path}\n`);
308
+ }
309
+ }
310
+ return result.errors > 0 ? 1 : 0;
311
+ }
312
+ function validateCommandArguments(args) {
313
+ const allowed = {
314
+ init: ['title', 'source', 'reference', 'generator'],
315
+ agent: ['agent'],
316
+ generator: [],
317
+ doctor: ['source', 'output', 'agent'],
318
+ create: ['agent', 'model', 'reasoning', 'reference', 'print', 'screenshots', 'no-screenshots', 'source', 'output'],
319
+ update: ['agent', 'model', 'reasoning', 'reference', 'print', 'screenshots', 'no-screenshots'],
320
+ review: ['agent', 'model', 'reasoning', 'reference', 'print'],
321
+ capture: [],
322
+ test: ['format'],
323
+ status: ['format'],
324
+ preview: ['host', 'port', 'open'],
325
+ login: ['api-url', 'token'],
326
+ logout: [],
327
+ whoami: ['api-url'],
328
+ deploy: ['dry-run', 'name', 'slug', 'api-url'],
329
+ };
330
+ if (args.command === undefined) {
331
+ assertAllowedFlags(args, new Set());
332
+ return;
333
+ }
334
+ const commandFlags = allowed[args.command];
335
+ if (commandFlags === undefined)
336
+ return;
337
+ assertAllowedFlags(args, new Set(commandFlags));
338
+ if (!['init', 'agent', 'generator', 'create', 'update', 'review', 'capture'].includes(args.command) &&
339
+ args.positionals.length > 0) {
340
+ throw new UsageError(`The ${args.command} command does not accept arguments.`);
341
+ }
342
+ }
343
+ function screenshotIntent(args) {
344
+ if (args.command === 'review')
345
+ return 'disabled';
346
+ return resolveScreenshotIntent(booleanFlag(args, 'screenshots'), booleanFlag(args, 'no-screenshots'));
347
+ }
348
+ function outputFormat(value) {
349
+ if (value === undefined || value === 'text')
350
+ return 'text';
351
+ if (value === 'json')
352
+ return 'json';
353
+ throw new UsageError('--format must be text or json');
354
+ }
355
+ function help(command) {
356
+ if (command === 'init') {
357
+ return `Usage: doxloop init <directory> [options]
358
+
359
+ Create a local documentation project and install the authoring and format skills.
360
+
361
+ Options:
362
+ --title <title> Documentation site title
363
+ --source <name=path> Add a local product source; may be repeated
364
+ --reference <url> Add a documentation design reference; may be repeated
365
+ --generator <name> Generator: ${GENERATOR_CATALOG.map((entry) => entry.id).join(', ')}
366
+ --cwd <directory> Resolve paths from this directory
367
+ `;
368
+ }
369
+ if (command === 'agent') {
370
+ return `Usage: doxloop agent <setup|status|update> [options]
371
+
372
+ Install or inspect the project-local Doxloop authoring and format skills.
373
+
374
+ Options:
375
+ --agent <name> codex, claude, or gemini
376
+ --cwd <directory> Run from this project directory
377
+ `;
378
+ }
379
+ if (command === 'generator') {
380
+ return `Usage: doxloop generator <action> [generator]
381
+
382
+ Install and inspect generator packages.
383
+
384
+ Actions:
385
+ list List official generators and installation state
386
+ add <generator> Install a generator package in the current project
387
+ remove <generator> Remove an unused generator package
388
+ info <generator> Show package, skill, build, and output information
389
+ doctor Verify the current project's selected generator
390
+
391
+ Options:
392
+ --cwd <directory> Run from this directory
393
+ `;
394
+ }
395
+ if (command === 'doctor') {
396
+ return `Usage: doxloop doctor [options]
397
+
398
+ Check whether Doxloop is ready to create, update, and preview documentation.
399
+
400
+ Run inside an existing documentation project, or check a new project layout:
401
+ doxloop doctor --source ./my-product --output ./my-docs
402
+
403
+ Options:
404
+ --source <directory> Read-only product source for a new project check
405
+ --output <directory> Separate documentation output for a new project check
406
+ --agent <name> Check codex, claude, or gemini
407
+ --cwd <directory> Run from this directory
408
+ `;
409
+ }
410
+ if (command === 'create' || command === 'update' || command === 'review') {
411
+ const screenshotOptions = command === 'review'
412
+ ? ''
413
+ : ` --screenshots Capture and embed application guide screenshots
414
+ --no-screenshots Do not capture application screenshots
415
+ `;
416
+ const createUsage = command === 'create'
417
+ ? `\nCreate a separate documentation project from an existing product:\n doxloop create --source <product-directory> --output <documentation-directory> [request]\n`
418
+ : '';
419
+ const createOptions = command === 'create'
420
+ ? ` --source <directory> Read-only product source for a new documentation project\n --output <directory> New, separate documentation project directory\n`
421
+ : '';
422
+ return `Usage: doxloop ${command} [request] [options]
423
+ ${createUsage}
424
+
425
+ Start an authoring agent with the project-local skill.
426
+
427
+ Options:
428
+ ${createOptions} --agent <name> codex, claude, or gemini
429
+ --model <name> Model passed to the selected agent CLI
430
+ --reasoning <level> Codex reasoning effort: minimal, low, medium, high, or xhigh
431
+ --reference <url> Use a documentation design reference; may be repeated
432
+ ${screenshotOptions} --print Print the prepared prompt instead of starting an agent
433
+ --cwd <directory> Run from this project directory
434
+ `;
435
+ }
436
+ if (command === 'capture') {
437
+ return `Usage: doxloop capture [url ...]
438
+
439
+ Render configured design-reference pages with a managed headless browser and
440
+ write full-page screenshots plus measured styles to .doxloop/cache/reference/.
441
+ Installs Playwright and Chromium on first use. URLs must be pages on a
442
+ configured design-reference origin; with no URLs, the configured reference
443
+ pages are captured.
444
+
445
+ Options:
446
+ --cwd <directory> Run from this project directory
447
+ `;
448
+ }
449
+ if (command === 'preview') {
450
+ return `Usage: doxloop preview [options]
451
+
452
+ Run the local documentation preview with live reload.
453
+
454
+ Options:
455
+ --host <host> Listening host (default: 127.0.0.1)
456
+ --port <port> Listening port (default: 4321)
457
+ --open Open the preview in a browser
458
+ --cwd <directory> Run from this project directory
459
+ `;
460
+ }
461
+ if (command === 'test' || command === 'status') {
462
+ return `Usage: doxloop ${command} [options]
463
+
464
+ ${command === 'test' ? 'Validate documentation structure and content.' : 'Summarize the project and its validation state.'}
465
+
466
+ Options:
467
+ --format <text|json> Output format (default: text)
468
+ --cwd <directory> Run from this project directory
469
+ `;
470
+ }
471
+ if (command === 'login') {
472
+ return `Usage: doxloop login [options]
473
+
474
+ Sign in with the Doxbrix device flow or verify a supplied personal access token.
475
+
476
+ Options:
477
+ --token <token> Token to verify and store; prefer the device flow or an environment variable
478
+ --api-url <url> HTTPS API base URL; HTTP is allowed only for localhost
479
+ `;
480
+ }
481
+ if (command === 'logout') {
482
+ return `Usage: doxloop logout
483
+
484
+ Remove the locally stored Doxbrix token.
485
+ `;
486
+ }
487
+ if (command === 'whoami') {
488
+ return `Usage: doxloop whoami [options]
489
+
490
+ Show the Doxbrix account for the active token.
491
+
492
+ Options:
493
+ --api-url <url> HTTPS API base URL; HTTP is allowed only for localhost
494
+ `;
495
+ }
496
+ if (command === 'deploy') {
497
+ return `Usage: doxloop deploy [options]
498
+
499
+ Validate and publish documentation through the public Doxbrix HTTP API.
500
+
501
+ Options:
502
+ --dry-run Validate and summarize without uploading
503
+ --name <name> Hosted project name
504
+ --slug <slug> Hosted project slug
505
+ --api-url <url> Override the Doxbrix API base URL
506
+ --cwd <directory> Run from this project directory
507
+ `;
508
+ }
509
+ return `Doxloop ${VERSION}
510
+
511
+ Local-first documentation authoring with Codex, Claude Code, or Gemini.
512
+
513
+ Usage:
514
+ doxloop <command> [options]
515
+
516
+ Author:
517
+ init Create a documentation project
518
+ create Ask an agent to create documentation
519
+ update Maintain docs after product changes
520
+ review Ask an agent for a read-only review
521
+ agent Set up project-local agent skills
522
+ generator Install and inspect generator packages
523
+ capture Capture rendered design-reference evidence
524
+
525
+ Verify:
526
+ doctor Check runtime, source, agent, generator, skills, and documentation
527
+ status Summarize the documentation project
528
+ test Validate pages, navigation, links, and code fences
529
+ preview Run a beautiful local preview
530
+
531
+ Publish:
532
+ login Sign in to Doxbrix
533
+ logout Remove the local token
534
+ whoami Show the current Doxbrix account
535
+ deploy Publish through the public Doxbrix HTTP API
536
+
537
+ Global options:
538
+ --cwd <directory> Run as if started in this directory
539
+ -h, --help Show help
540
+ -v, --version Show version
541
+
542
+ Run \`doxloop <command> --help\` for command details.
543
+ `;
544
+ }
545
+ main()
546
+ .then((code) => {
547
+ process.exitCode = code;
548
+ })
549
+ .catch((error) => {
550
+ if (error instanceof DoxloopError) {
551
+ process.stderr.write(`doxloop: ${error.message}\n`);
552
+ process.exitCode = error.exitCode;
553
+ return;
554
+ }
555
+ process.stderr.write(`doxloop: ${error instanceof Error ? error.stack ?? error.message : String(error)}\n`);
556
+ process.exitCode = 1;
557
+ });
558
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ interface DeploymentBundle {
2
+ manifest: unknown;
3
+ basePath: string;
4
+ pages: Array<{
5
+ path: string;
6
+ markdown: string;
7
+ }>;
8
+ media: Array<{
9
+ path: string;
10
+ base64: string;
11
+ }>;
12
+ }
13
+ export declare function deploy(options: {
14
+ root: string;
15
+ name?: string;
16
+ slug?: string;
17
+ dryRun?: boolean;
18
+ apiUrl?: string;
19
+ }): Promise<void>;
20
+ export declare function buildDeploymentBundle(root: string, contentDir: string): Promise<DeploymentBundle>;
21
+ export {};
22
+ //# sourceMappingURL=deploy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["../src/deploy.ts"],"names":[],"mappings":"AA0CA,UAAU,gBAAgB;IACxB,QAAQ,EAAE,OAAO,CAAA;IACjB,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IAChD,KAAK,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAC/C;AAgBD,wBAAsB,MAAM,CAAC,OAAO,EAAE;IACpC,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB,GAAG,OAAO,CAAC,IAAI,CAAC,CAwFhB;AAED,wBAAsB,qBAAqB,CACzC,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,gBAAgB,CAAC,CA4B3B"}