@doxbrix/doxloop 0.1.5 → 0.2.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/CHANGELOG.md +1145 -0
- package/README.md +422 -227
- package/assets/doxbrix-preview.css +77 -15
- package/contracts/agent-events-v1.schema.json +1 -0
- package/contracts/coverage-v1.schema.json +59 -0
- package/contracts/drift-v1.schema.json +1 -0
- package/contracts/evaluation-v1.schema.json +62 -0
- package/contracts/quality-codes-v1.json +1 -0
- package/contracts/quality-report-v1.schema.json +1 -0
- package/contracts/validation-v1.schema.json +1 -0
- package/dist/agent-failure.d.ts +36 -0
- package/dist/agent-failure.js +98 -0
- package/dist/agent-isolation.d.ts +17 -0
- package/dist/agent-isolation.js +94 -0
- package/dist/agent-log.d.ts +197 -0
- package/dist/agent-log.js +1094 -0
- package/dist/agent-process.d.ts +63 -0
- package/dist/agent-process.js +128 -0
- package/dist/agent-reply.d.ts +47 -0
- package/dist/agent-reply.js +315 -0
- package/dist/agents.d.ts +24 -5
- package/dist/agents.js +60 -9
- package/dist/api-coverage.d.ts +11 -0
- package/dist/api-coverage.js +72 -0
- package/dist/application-probe.d.ts +28 -0
- package/dist/application-probe.js +93 -0
- package/dist/application-url.d.ts +14 -0
- package/dist/application-url.js +26 -0
- package/dist/args.js +15 -0
- package/dist/artifact-deploy.d.ts +9 -0
- package/dist/artifact-deploy.js +28 -8
- package/dist/assets.d.ts +72 -0
- package/dist/assets.js +382 -0
- package/dist/auth.d.ts +10 -0
- package/dist/auth.js +38 -9
- package/dist/author.d.ts +206 -4
- package/dist/author.js +1650 -52
- package/dist/authoring-batches.d.ts +190 -0
- package/dist/authoring-batches.js +489 -0
- package/dist/authoring-postpass.d.ts +79 -0
- package/dist/authoring-postpass.js +1289 -0
- package/dist/authoring-progress.d.ts +95 -0
- package/dist/authoring-progress.js +269 -0
- package/dist/autosync.d.ts +56 -0
- package/dist/autosync.js +442 -0
- package/dist/batch-artifacts.d.ts +81 -0
- package/dist/batch-artifacts.js +412 -0
- package/dist/batch-limits.d.ts +37 -0
- package/dist/batch-limits.js +80 -0
- package/dist/branding.d.ts +41 -0
- package/dist/branding.js +229 -0
- package/dist/bundle-upload.d.ts +26 -0
- package/dist/bundle-upload.js +99 -0
- package/dist/capture-auth.d.ts +95 -0
- package/dist/capture-auth.js +204 -0
- package/dist/capture.d.ts +48 -0
- package/dist/capture.js +20 -1
- package/dist/cli.js +839 -32
- package/dist/content-links.d.ts +10 -0
- package/dist/content-links.js +49 -0
- package/dist/contract-validation.d.ts +4 -0
- package/dist/contract-validation.js +25 -0
- package/dist/coverage-actions.d.ts +8 -0
- package/dist/coverage-actions.js +71 -0
- package/dist/coverage-resolutions.d.ts +16 -0
- package/dist/coverage-resolutions.js +58 -0
- package/dist/db.d.ts +37 -0
- package/dist/db.js +288 -0
- package/dist/demo.d.ts +12 -0
- package/dist/demo.js +122 -0
- package/dist/deploy-credentials.d.ts +7 -0
- package/dist/deploy-credentials.js +76 -0
- package/dist/deploy-targets/github-pages.d.ts +3 -0
- package/dist/deploy-targets/github-pages.js +100 -0
- package/dist/deploy-targets/index.d.ts +8 -0
- package/dist/deploy-targets/index.js +78 -0
- package/dist/deploy-targets/netlify.d.ts +3 -0
- package/dist/deploy-targets/netlify.js +49 -0
- package/dist/deploy-targets/types.d.ts +32 -0
- package/dist/deploy-targets/types.js +2 -0
- package/dist/deploy-targets/vercel.d.ts +3 -0
- package/dist/deploy-targets/vercel.js +95 -0
- package/dist/deploy.d.ts +9 -0
- package/dist/deploy.js +87 -13
- package/dist/deterministic-capture.d.ts +90 -0
- package/dist/deterministic-capture.js +435 -0
- package/dist/direct-edit.d.ts +40 -0
- package/dist/direct-edit.js +159 -0
- package/dist/docs-crawl.d.ts +86 -0
- package/dist/docs-crawl.js +536 -0
- package/dist/docs-site.d.ts +49 -0
- package/dist/docs-site.js +233 -0
- package/dist/doctor.js +8 -0
- package/dist/documentation-collections.d.ts +23 -0
- package/dist/documentation-collections.js +191 -0
- package/dist/documentation-plan.d.ts +253 -0
- package/dist/documentation-plan.js +2563 -0
- package/dist/doxbrix-build.d.ts +19 -0
- package/dist/doxbrix-build.js +167 -0
- package/dist/doxbrix-markdown.d.ts +9 -0
- package/dist/doxbrix-markdown.js +115 -14
- package/dist/drift.d.ts +10 -0
- package/dist/drift.js +164 -0
- package/dist/evaluation.d.ts +46 -0
- package/dist/evaluation.js +113 -0
- package/dist/evidence-pack.d.ts +47 -0
- package/dist/evidence-pack.js +358 -0
- package/dist/evidence.d.ts +25 -0
- package/dist/evidence.js +175 -0
- package/dist/fs.d.ts +8 -2
- package/dist/fs.js +41 -11
- package/dist/generator-api.d.ts +89 -0
- package/dist/generator-preflight.d.ts +27 -0
- package/dist/generator-preflight.js +105 -0
- package/dist/generator-runtime.d.ts +7 -0
- package/dist/generator-runtime.js +17 -1
- package/dist/generators.d.ts +24 -2
- package/dist/generators.js +54 -1
- package/dist/git-delivery.d.ts +17 -0
- package/dist/git-delivery.js +123 -0
- package/dist/globs.d.ts +16 -0
- package/dist/globs.js +65 -0
- package/dist/glossary.d.ts +26 -0
- package/dist/glossary.js +179 -0
- package/dist/history.d.ts +106 -0
- package/dist/history.js +600 -0
- package/dist/html-markdown.d.ts +46 -0
- package/dist/html-markdown.js +423 -0
- package/dist/interactive.js +3 -0
- package/dist/job-events.d.ts +74 -0
- package/dist/job-events.js +377 -0
- package/dist/keep-awake.d.ts +50 -0
- package/dist/keep-awake.js +123 -0
- package/dist/local-source-snapshot.d.ts +20 -0
- package/dist/local-source-snapshot.js +61 -0
- package/dist/mintlify-detect.d.ts +3 -0
- package/dist/mintlify-detect.js +18 -0
- package/dist/mintlify-import.d.ts +75 -0
- package/dist/mintlify-import.js +190 -0
- package/dist/navigation.d.ts +98 -0
- package/dist/navigation.js +310 -0
- package/dist/openapi.d.ts +60 -0
- package/dist/openapi.js +439 -0
- package/dist/page-editor-bridge.d.ts +3 -0
- package/dist/page-editor-bridge.js +109 -0
- package/dist/page-editor-preview.d.ts +10 -0
- package/dist/page-editor-preview.js +55 -0
- package/dist/page-extension.d.ts +9 -0
- package/dist/page-extension.js +15 -0
- package/dist/page-metadata.d.ts +28 -0
- package/dist/page-metadata.js +166 -0
- package/dist/page-operations.d.ts +34 -0
- package/dist/page-operations.js +215 -0
- package/dist/page-routes.d.ts +4 -0
- package/dist/page-routes.js +61 -0
- package/dist/pages.d.ts +20 -0
- package/dist/pages.js +184 -0
- package/dist/plan-generator.d.ts +3 -0
- package/dist/plan-generator.js +21 -0
- package/dist/plan-navigation.d.ts +11 -0
- package/dist/plan-navigation.js +30 -0
- package/dist/planning-captures.d.ts +20 -0
- package/dist/planning-captures.js +143 -0
- package/dist/planning-research.d.ts +135 -0
- package/dist/planning-research.js +472 -0
- package/dist/planning-triage.d.ts +23 -0
- package/dist/planning-triage.js +131 -0
- package/dist/preview.d.ts +24 -0
- package/dist/preview.js +280 -29
- package/dist/project-detect.d.ts +36 -0
- package/dist/project-detect.js +251 -0
- package/dist/project-import.d.ts +54 -0
- package/dist/project-import.js +157 -0
- package/dist/project-lock.d.ts +6 -0
- package/dist/project-lock.js +96 -0
- package/dist/project-registry.d.ts +25 -0
- package/dist/project-registry.js +79 -0
- package/dist/project.d.ts +35 -3
- package/dist/project.js +388 -38
- package/dist/prompts.d.ts +9 -0
- package/dist/prompts.js +25 -0
- package/dist/proposal-replay.d.ts +32 -0
- package/dist/proposal-replay.js +99 -0
- package/dist/quality-claims.d.ts +8 -0
- package/dist/quality-claims.js +168 -0
- package/dist/quality-config.d.ts +5 -0
- package/dist/quality-config.js +84 -0
- package/dist/quality-contract.d.ts +37 -0
- package/dist/quality-contract.js +46 -0
- package/dist/quality-examples.d.ts +4 -0
- package/dist/quality-examples.js +233 -0
- package/dist/quality-gates.d.ts +16 -0
- package/dist/quality-gates.js +192 -0
- package/dist/quality-links.d.ts +7 -0
- package/dist/quality-links.js +149 -0
- package/dist/quality-lint.d.ts +6 -0
- package/dist/quality-lint.js +124 -0
- package/dist/quality-rendered.d.ts +11 -0
- package/dist/quality-rendered.js +222 -0
- package/dist/quality-schema.d.ts +3 -0
- package/dist/quality-schema.js +71 -0
- package/dist/release-notes.d.ts +44 -0
- package/dist/release-notes.js +183 -0
- package/dist/remote-monitor.d.ts +16 -0
- package/dist/remote-monitor.js +74 -0
- package/dist/remote-source.d.ts +34 -0
- package/dist/remote-source.js +426 -0
- package/dist/review-diff.d.ts +82 -0
- package/dist/review-diff.js +400 -0
- package/dist/review-learning.d.ts +11 -0
- package/dist/review-learning.js +60 -0
- package/dist/review-render.d.ts +38 -0
- package/dist/review-render.js +224 -0
- package/dist/review-report.d.ts +9 -0
- package/dist/review-report.js +89 -0
- package/dist/review-ui.d.ts +14 -0
- package/dist/review-ui.js +1248 -0
- package/dist/schedule.d.ts +78 -0
- package/dist/schedule.js +480 -0
- package/dist/screen-capture-provider.d.ts +52 -0
- package/dist/screen-capture-provider.js +218 -0
- package/dist/screenshot-workflow.d.ts +167 -0
- package/dist/screenshot-workflow.js +1237 -0
- package/dist/settings.d.ts +1 -1
- package/dist/settings.js +95 -7
- package/dist/site-export.d.ts +18 -0
- package/dist/site-export.js +87 -0
- package/dist/source-connectors.d.ts +33 -0
- package/dist/source-connectors.js +268 -0
- package/dist/source-discovery.d.ts +132 -0
- package/dist/source-discovery.js +823 -0
- package/dist/source-intelligence.d.ts +9 -0
- package/dist/source-intelligence.js +306 -0
- package/dist/sync-review.d.ts +28 -0
- package/dist/sync-review.js +264 -0
- package/dist/sync-runs.d.ts +192 -0
- package/dist/sync-runs.js +2244 -0
- package/dist/sync.d.ts +35 -0
- package/dist/sync.js +298 -32
- package/dist/text-diff.d.ts +9 -0
- package/dist/text-diff.js +59 -0
- package/dist/types.d.ts +946 -1
- package/dist/ui/assets/doxloop-logo-light-De7Nx7j7.png +0 -0
- package/dist/ui/assets/index-BHBYU2aG.css +1 -0
- package/dist/ui/assets/index-Cq3RPQiC.js +33 -0
- package/dist/ui/index.html +18 -0
- package/dist/ui-server.d.ts +83 -0
- package/dist/ui-server.js +3532 -0
- package/dist/usage-budget.d.ts +28 -0
- package/dist/usage-budget.js +90 -0
- package/dist/validation.d.ts +25 -1
- package/dist/validation.js +312 -26
- package/dist/workspace-tools.d.ts +54 -0
- package/dist/workspace-tools.js +123 -0
- package/docs/agent-compatibility.md +49 -32
- package/docs/ci-and-automation.md +105 -66
- package/docs/doxbrix-http-api.md +8 -1
- package/docs/existing-documentation.md +80 -0
- package/docs/generation-performance.md +108 -0
- package/docs/generator-authoring.md +68 -5
- package/docs/generator-selection.md +50 -13
- package/docs/mintlify-import.md +71 -0
- package/docs/openapi-security.md +25 -0
- package/docs/project-format.md +331 -36
- package/docs/release-quality.md +158 -0
- package/docs/releasing.md +72 -0
- package/docs/review-workflows.md +51 -0
- package/docs/security-model.md +102 -39
- package/docs/troubleshooting.md +226 -93
- package/package.json +46 -15
- package/scripts/test-auto-screenshot.mjs +172 -0
- package/skills/doxloop-authoring/SKILL.md +242 -361
- package/skills/doxloop-authoring/references/existing-documentation.md +94 -0
- package/skills/doxloop-authoring/references/navigation-architecture.md +18 -7
- package/skills/doxloop-authoring/references/page-depth.md +169 -0
- package/skills/doxloop-authoring/references/project-format.md +106 -7
- package/skills/doxloop-authoring/references/quality.md +10 -0
- package/skills/doxloop-authoring/references/screenshot-manifest.md +113 -0
- package/skills/doxloop-authoring/references/screenshots.md +149 -235
- package/skills/doxloop-authoring/references/workflows.md +76 -0
- package/skills/doxloop-doxbrix/SKILL.md +38 -22
- package/skills/doxloop-doxbrix/references/api-endpoints.md +15 -14
- package/skills/doxloop-doxbrix/references/components.md +30 -3
- package/skills/doxloop-doxbrix/references/manifest.md +3 -2
- package/vendor/doxbrix-import/LICENSE +202 -0
- package/vendor/doxbrix-import/README.md +17 -0
- package/vendor/doxbrix-import/UPSTREAM.json +47 -0
- package/vendor/doxbrix-import/dist/docs/frontmatter.d.ts +13 -0
- package/vendor/doxbrix-import/dist/docs/frontmatter.js +83 -0
- package/vendor/doxbrix-import/dist/docs/import.d.ts +21 -0
- package/vendor/doxbrix-import/dist/docs/import.js +147 -0
- package/vendor/doxbrix-import/dist/docs/manifest.d.ts +163 -0
- package/vendor/doxbrix-import/dist/docs/manifest.js +64 -0
- package/vendor/doxbrix-import/dist/docs/project.d.ts +25 -0
- package/vendor/doxbrix-import/dist/docs/project.js +77 -0
- package/vendor/doxbrix-import/dist/docs/starter.d.ts +4 -0
- package/vendor/doxbrix-import/dist/docs/starter.js +11 -0
- package/vendor/doxbrix-import/dist/importer.d.ts +227 -0
- package/vendor/doxbrix-import/dist/importer.js +1567 -0
- package/vendor/doxbrix-import/dist/mintlify-openapi.d.ts +37 -0
- package/vendor/doxbrix-import/dist/mintlify-openapi.js +305 -0
- package/vendor/doxbrix-import/dist/safe-path.d.ts +9 -0
- package/vendor/doxbrix-import/dist/safe-path.js +47 -0
- package/dist/agents.d.ts.map +0 -1
- package/dist/agents.js.map +0 -1
- package/dist/args.d.ts.map +0 -1
- package/dist/args.js.map +0 -1
- package/dist/artifact-deploy.d.ts.map +0 -1
- package/dist/artifact-deploy.js.map +0 -1
- package/dist/auth.d.ts.map +0 -1
- package/dist/auth.js.map +0 -1
- package/dist/author.d.ts.map +0 -1
- package/dist/author.js.map +0 -1
- package/dist/capture.d.ts.map +0 -1
- package/dist/capture.js.map +0 -1
- package/dist/cli.d.ts.map +0 -1
- package/dist/cli.js.map +0 -1
- package/dist/deploy.d.ts.map +0 -1
- package/dist/deploy.js.map +0 -1
- package/dist/deployment-visibility.d.ts.map +0 -1
- package/dist/deployment-visibility.js.map +0 -1
- package/dist/doctor.d.ts.map +0 -1
- package/dist/doctor.js.map +0 -1
- package/dist/doxbrix-markdown.d.ts.map +0 -1
- package/dist/doxbrix-markdown.js.map +0 -1
- package/dist/errors.d.ts.map +0 -1
- package/dist/errors.js.map +0 -1
- package/dist/fs.d.ts.map +0 -1
- package/dist/fs.js.map +0 -1
- package/dist/generator-api.d.ts.map +0 -1
- package/dist/generator-api.js.map +0 -1
- package/dist/generator-manager.d.ts.map +0 -1
- package/dist/generator-manager.js.map +0 -1
- package/dist/generator-runtime.d.ts.map +0 -1
- package/dist/generator-runtime.js.map +0 -1
- package/dist/generators.d.ts.map +0 -1
- package/dist/generators.js.map +0 -1
- package/dist/interactive.d.ts.map +0 -1
- package/dist/interactive.js.map +0 -1
- package/dist/preview.d.ts.map +0 -1
- package/dist/preview.js.map +0 -1
- package/dist/progress.d.ts.map +0 -1
- package/dist/progress.js.map +0 -1
- package/dist/project.d.ts.map +0 -1
- package/dist/project.js.map +0 -1
- package/dist/prompts.d.ts.map +0 -1
- package/dist/prompts.js.map +0 -1
- package/dist/settings.d.ts.map +0 -1
- package/dist/settings.js.map +0 -1
- package/dist/sync.d.ts.map +0 -1
- package/dist/sync.js.map +0 -1
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js.map +0 -1
- package/dist/validation.d.ts.map +0 -1
- package/dist/validation.js.map +0 -1
- package/dist/version.d.ts.map +0 -1
- package/dist/version.js.map +0 -1
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
# Generation performance and usage budgets
|
|
2
|
+
|
|
3
|
+
Planning saves useful browser screenshots while it explores the application.
|
|
4
|
+
The application research checkpoint records capture IDs, paths, visible states,
|
|
5
|
+
labels, alt text and review checks. The approved plan references those IDs in
|
|
6
|
+
`visuals.captureIds`, in the same order as `captureSequence`. A missing capture
|
|
7
|
+
uses an empty ID. New plans prefer meaningful saved images over fixed image
|
|
8
|
+
counts per page type. Explicit user requirements remain authoritative.
|
|
9
|
+
|
|
10
|
+
Generation copies selected, reviewed PNGs into the generator's asset directory.
|
|
11
|
+
Missing, corrupt, unreviewed or ambiguous captures remain pending. Missing states
|
|
12
|
+
run in short capture-only sessions before writing. Writers receive a compact
|
|
13
|
+
plan slice, relevant source excerpts, extracted English UI labels and saved
|
|
14
|
+
image descriptions. They choose and embed the images without browsing again.
|
|
15
|
+
Older plans without a capture catalogue use the separate capture stage.
|
|
16
|
+
|
|
17
|
+
Completed writing is checkpointed independently of capture and validation.
|
|
18
|
+
Resume retains written pages and verified captures; validation defects are sent
|
|
19
|
+
to targeted repairs. A crashed child can retry without cancelling the entire
|
|
20
|
+
run. An account-limit response stops further scheduling and retries immediately.
|
|
21
|
+
|
|
22
|
+
## Limits
|
|
23
|
+
|
|
24
|
+
A plan shares one persistent usage ledger across planning, capture, writing,
|
|
25
|
+
repairs and resumed attempts: `.doxloop/plans/<id>/usage-budget.json`.
|
|
26
|
+
There is **no limit by default**: a run only stops when a cap is set
|
|
27
|
+
explicitly. Set `sync.budget.maxUsd` in the project, or the variables below,
|
|
28
|
+
to enforce one. The first reached limit stops active sessions and preserves
|
|
29
|
+
work.
|
|
30
|
+
|
|
31
|
+
Environment overrides, read when Doxloop starts a stage:
|
|
32
|
+
|
|
33
|
+
| Variable | Default | Meaning |
|
|
34
|
+
| --- | ---: | --- |
|
|
35
|
+
| `DOXLOOP_MAX_TOKENS` | unlimited | Total reported tokens for this plan, across attempts |
|
|
36
|
+
| `DOXLOOP_MAX_USD` | unlimited | Total reported dollars; overrides the project setting |
|
|
37
|
+
| `DOXLOOP_AUTHORING_PARALLEL` | 3 | Concurrent writer sessions (the first batch of a new site runs alone) |
|
|
38
|
+
| `DOXLOOP_AUTHORING_EFFORT` | plan's effort | Reasoning effort of the writer sessions (`low`…`max`) |
|
|
39
|
+
| `DOXLOOP_SUPPORT_EFFORT` | low | Reasoning effort of capture, fix, and retake sessions |
|
|
40
|
+
| `DOXLOOP_CAPTURE_GUIDES_PER_SESSION` | 3 | Guides per capture session (one sign-in each) |
|
|
41
|
+
| `DOXLOOP_AUTHORING_BATCH_PAGES` | 4 | Pages per writer session |
|
|
42
|
+
| `DOXLOOP_PLANNING_PARALLEL` | 2 | Concurrent research sessions (Gemini runs serially) |
|
|
43
|
+
|
|
44
|
+
Limits are enforced when agents report usage. An in-flight response may
|
|
45
|
+
overshoot; providers that report cost only on completion cannot be stopped
|
|
46
|
+
mid-response by cost alone. These counters are not the provider's five-hour
|
|
47
|
+
subscription allowance. Work done before this ledger existed is not backfilled.
|
|
48
|
+
A quota pause can resume after the provider reset. A Doxloop budget pause requires
|
|
49
|
+
explicitly raising its limit; resume does not reset the ledger.
|
|
50
|
+
|
|
51
|
+
New starter plans default to 5 pages and 15 captures. Standard and
|
|
52
|
+
comprehensive plans have no page cap: the evidence sets their size, up to the
|
|
53
|
+
300-capture run maximum. A reviewer can still set a cap on the plan review's
|
|
54
|
+
batch-limits panel. Approved plans keep their existing scope. Reducing parallelism limits simultaneous spend, but does
|
|
55
|
+
not by itself reduce total tokens.
|
|
56
|
+
|
|
57
|
+
## Comparing performance
|
|
58
|
+
|
|
59
|
+
Compare identical source snapshots, approved pages, capture states, model and
|
|
60
|
+
effort. Measure planning and authoring wall time separately, total reported
|
|
61
|
+
input/cache/output tokens, reported cost, missing-state browser calls, and final
|
|
62
|
+
validation outcome. Exclude idle time between attempts. Local fake-agent tests
|
|
63
|
+
verify reuse and recovery without consuming model allowance; a real-agent
|
|
64
|
+
comparison is needed before claiming a percentage saving.
|
|
65
|
+
|
|
66
|
+
Offline prompt comparison on the saved `vikunja7` first six-page batch:
|
|
67
|
+
the previous full-request construction was 40,000 bytes; the compact batch
|
|
68
|
+
construction was 10,208 bytes (74% smaller). This comparison holds page scope
|
|
69
|
+
constant and excludes tool results, source excerpts and model completions. It
|
|
70
|
+
is a prompt-size measurement, not a claim of 74% lower billed usage or latency.
|
|
71
|
+
|
|
72
|
+
## Verifying a change without a run
|
|
73
|
+
|
|
74
|
+
`doxloop replay <run-directory>` copies a recorded run's workspace
|
|
75
|
+
(`.doxloop/runs/<run-id>`) and re-runs the end-of-generation pipeline over it:
|
|
76
|
+
capture status from the images on disk, the tolerant screenshot check, the
|
|
77
|
+
deterministic post-pass, starter cleanup, and the validation "Accept all"
|
|
78
|
+
performs. It prints every repair and the errors left, exits 1 when the accept
|
|
79
|
+
check would still fail, and never modifies the run folder. Keep the run
|
|
80
|
+
folders of runs that ended blocked: each is a regression fixture for the gate
|
|
81
|
+
that blocked it.
|
|
82
|
+
|
|
83
|
+
|
|
84
|
+
## Planning research is scoped to the request
|
|
85
|
+
|
|
86
|
+
Planning research (product audit, application exploration, existing-site
|
|
87
|
+
audits) is the largest cost of an update run. Before any session starts,
|
|
88
|
+
Doxloop triages the update request:
|
|
89
|
+
|
|
90
|
+
| Request | Research | Planner |
|
|
91
|
+
|---|---|---|
|
|
92
|
+
| Navigation, icons, ordering, group names, branding, metadata | none | one session, given the current navigation and the icon names the generator can draw; returns preserved pages plus `workspaceInstructions` |
|
|
93
|
+
| Names existing pages (by file name or path) | product audit focused on those pages; application only when screenshots are required | one session from the focused brief |
|
|
94
|
+
| Product-wide, or adds pages on subjects not yet documented | full research, as a create run | one session from every brief |
|
|
95
|
+
|
|
96
|
+
Deterministic rules decide the clear cases. An ambiguous request gets one
|
|
97
|
+
short triage session that reads nothing and answers from the request and the
|
|
98
|
+
page list; if it fails, the full research runs. The decision is stored on the
|
|
99
|
+
plan (`research`) and shown as the first review advisory.
|
|
100
|
+
|
|
101
|
+
Briefs are keyed by source snapshot, capture intent, agent, model, and focus,
|
|
102
|
+
not by plan id, so a later plan on unchanged sources borrows the newest saved
|
|
103
|
+
product and existing-documentation briefs instead of auditing again. The
|
|
104
|
+
application brief is never borrowed: it names captures under its own plan.
|
|
105
|
+
|
|
106
|
+
Generation applies `workspaceInstructions` in one short session after the
|
|
107
|
+
pages are written, editing only the navigation configuration (or theme and
|
|
108
|
+
brand files) and never page content.
|
|
@@ -12,11 +12,37 @@ Export a default adapter created with `defineGenerator` from
|
|
|
12
12
|
- package identity and version;
|
|
13
13
|
- authoring skill name and directory;
|
|
14
14
|
- content root, page extensions, ignored output, and content format;
|
|
15
|
+
- native navigation files used to translate a generator-neutral documentation
|
|
16
|
+
plan into the framework's own sidebar, menu, or index;
|
|
15
17
|
- native build command and output directory;
|
|
16
18
|
- scaffold, preview, and validation implementations;
|
|
17
19
|
- an optional local-asset resolver for root-relative public assets outside the
|
|
18
|
-
content directory;
|
|
19
|
-
- an optional page reader for non-Markdown formats
|
|
20
|
+
content directory;
|
|
21
|
+
- an optional page reader for non-Markdown formats;
|
|
22
|
+
- an optional `writeNavigation` hook that adds, removes, or renames a page in
|
|
23
|
+
the generator's own navigation file (MkDocs edits `nav` in `mkdocs.yml`
|
|
24
|
+
through the YAML document model so comments and Python tags survive;
|
|
25
|
+
Markdoc rewrites `navigation.json`); and
|
|
26
|
+
- an optional `renderPage` hook that returns HTML for one page without the
|
|
27
|
+
native build, for previews (the static HTML adapter returns the page's
|
|
28
|
+
`<main>` landmark);
|
|
29
|
+
- optional `readNavigationTree` and `writeNavigationTree` hooks that expose
|
|
30
|
+
the whole navigation as a tree of page and group nodes, so the control
|
|
31
|
+
center's **Navigation** view can reorder, group, and relabel it (MkDocs maps
|
|
32
|
+
its `nav` list, including `Title: path` and `Section: [...]` entries, and
|
|
33
|
+
writes it back through the YAML document model);
|
|
34
|
+
- an optional `project.assets` location naming the directory uploads land in
|
|
35
|
+
and the public prefix pages use to reference them (the control center
|
|
36
|
+
otherwise uses the generator's conventional directory, such as `static/img`
|
|
37
|
+
for Docusaurus or `docs/assets` for MkDocs); and
|
|
38
|
+
- an optional `theme.configFile` naming the file the **Branding** panel should
|
|
39
|
+
point people at, since only the built-in Doxbrix theme is edited in place.
|
|
40
|
+
|
|
41
|
+
Adapters without `writeNavigation` are treated as file-system driven: Doxloop
|
|
42
|
+
does not edit their configuration. Adapters without the tree hooks are shown
|
|
43
|
+
read-only in the navigation editor with the name of their navigation file.
|
|
44
|
+
Adapters without `renderPage` fall back to the control center's generic
|
|
45
|
+
Markdown preview.
|
|
20
46
|
|
|
21
47
|
Package metadata should include:
|
|
22
48
|
|
|
@@ -31,14 +57,38 @@ Package metadata should include:
|
|
|
31
57
|
}
|
|
32
58
|
```
|
|
33
59
|
|
|
60
|
+
Adapters declare planning boundaries without implementing a second plan
|
|
61
|
+
schema:
|
|
62
|
+
|
|
63
|
+
```ts
|
|
64
|
+
planning: {
|
|
65
|
+
navigationFiles: ['framework.config.js', 'sidebar.json'],
|
|
66
|
+
}
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
`navigationFiles` are project-relative and identify files an approved plan may
|
|
70
|
+
require the authoring agent to update. Page grouping and ordering remain in the
|
|
71
|
+
core generator-neutral plan; the format skill translates them into native
|
|
72
|
+
syntax.
|
|
73
|
+
|
|
34
74
|
## Responsibilities
|
|
35
75
|
|
|
36
76
|
Scaffolding creates a minimal native project with explicit starter markers that
|
|
37
|
-
must fail release validation until authoring replaces them
|
|
77
|
+
must fail release validation until authoring replaces them (`<!-- doxloop:starter-page -->`
|
|
78
|
+
in Markdown and HTML, `{/* doxloop:starter-page */}` in MDX, and the
|
|
79
|
+
`.. doxloop:starter-page` comment in reStructuredText). Preview runs the
|
|
38
80
|
native development workflow without editing generated output. Validation checks
|
|
39
81
|
native navigation, configuration, metadata, routes, and conventions; shared
|
|
40
82
|
validation checks professional content, local links, placeholders, and secrets.
|
|
41
83
|
|
|
84
|
+
Navigation validation must understand the site as the framework builds it,
|
|
85
|
+
not only the two-page scaffold: nested indexes, section pages, autogenerated
|
|
86
|
+
groups, and multi-sidebar objects. When the configuration cannot be read
|
|
87
|
+
statically (a theme, a plugin, a function, an import), return a single
|
|
88
|
+
`navigationUnverifiedIssue` warning from `@doxbrix/doxloop/generator-runtime`
|
|
89
|
+
instead of `unnavigated-page` errors; `contentRelativePages` from the same
|
|
90
|
+
module gives content-relative page paths for comparison.
|
|
91
|
+
|
|
42
92
|
The format skill must use `$doxloop-authoring`, route all reader pages through
|
|
43
93
|
native navigation, document native components and theme mapping, identify
|
|
44
94
|
generated directories, and require both `doxloop test` and the strict native
|
|
@@ -55,5 +105,18 @@ packages declare a compatible core peer dependency and are published after the
|
|
|
55
105
|
matching core version.
|
|
56
106
|
|
|
57
107
|
Tests should scaffold, load, validate, install the format skill, build, and
|
|
58
|
-
exercise preview failure behavior.
|
|
59
|
-
|
|
108
|
+
exercise preview failure behavior. `src/generator-navigation.test.ts` holds a
|
|
109
|
+
nested-navigation fixture per generator; add one for any adapter you change.
|
|
110
|
+
Skill validation checks frontmatter, metadata, local reference links (fenced
|
|
111
|
+
code is skipped), shared-skill delegation, and generator routing. Every
|
|
112
|
+
generator skill ships `references/authoring.md` covering callouts, tabs, code
|
|
113
|
+
blocks, images, and diagrams in that generator's syntax.
|
|
114
|
+
|
|
115
|
+
The GitHub Actions workflow in `.github/workflows/ci.yml` runs typecheck, unit
|
|
116
|
+
tests, and skill validation on every pull request, then scaffolds, previews,
|
|
117
|
+
and builds each generator through `scripts/ci-generator-smoke.mjs`, which is
|
|
118
|
+
also runnable locally:
|
|
119
|
+
|
|
120
|
+
```bash
|
|
121
|
+
pnpm run build && node scripts/ci-generator-smoke.mjs mkdocs
|
|
122
|
+
```
|
|
@@ -1,25 +1,62 @@
|
|
|
1
1
|
# Select a documentation generator
|
|
2
2
|
|
|
3
|
-
Choose the generator
|
|
4
|
-
|
|
3
|
+
Choose the generator in the setup wizard's **Tools** step, under
|
|
4
|
+
**Documentation generator**. Doxbrix is built in and recommended; choosing
|
|
5
|
+
another generator installs its adapter package into the new documentation
|
|
6
|
+
project before the workspace opens.
|
|
5
7
|
|
|
6
8
|
Use Doxbrix for native Doxbrix publishing and interactive API endpoint blocks.
|
|
7
9
|
Choose another generator when an existing toolchain, extension ecosystem, or
|
|
8
|
-
static-hosting requirement is more important.
|
|
10
|
+
static-hosting requirement is more important. Native generators may also need
|
|
11
|
+
their own runtime, such as Python for MkDocs and Sphinx, Ruby for Jekyll, or
|
|
12
|
+
the Hugo binary.
|
|
9
13
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
+
## Support tiers and toolchain check
|
|
15
|
+
|
|
16
|
+
Every generator in the list carries a tier and the toolchain it needs. The
|
|
17
|
+
tier describes what Doxloop's adapter does for that generator today, not how
|
|
18
|
+
capable the framework is:
|
|
19
|
+
|
|
20
|
+
| Tier | Generators | What Doxloop provides |
|
|
21
|
+
| --- | --- | --- |
|
|
22
|
+
| Full | Doxbrix, Docusaurus, MkDocs Material | Navigation, callouts, tabs, and Mermaid diagrams validated and documented; scaffold, preview, and strict build exercised in CI |
|
|
23
|
+
| Supported | Sphinx, Hugo, VitePress, Starlight | Nested navigation validated wherever the configuration is readable (nested toctrees, section pages and menus, multi-sidebar objects, autogenerated groups); a `navigation-unverified` warning instead of false errors when a theme, plugin, or code builds it; authoring syntax documented |
|
|
24
|
+
| Basic | Nextra, Markdoc, Jekyll, Static HTML | Scaffold, preview, and build work; navigation checks cover the files the scaffold owns; authoring syntax documented |
|
|
25
|
+
|
|
26
|
+
When you pick a generator in the **Tools** step, Doxloop checks the toolchain
|
|
27
|
+
it needs on this machine: Node.js 22.13 or later with a package manager,
|
|
28
|
+
Python 3.9 or later with `venv`, the `hugo` binary, or Ruby with Bundler. A
|
|
29
|
+
missing tool does not stop the project from being created, since the adapter
|
|
30
|
+
package installs with npm, but preview and the strict build will not run until
|
|
31
|
+
it is installed. **Check again** re-runs the check after you install
|
|
32
|
+
something. **What each generator supports** under the fields lists every
|
|
33
|
+
generator with its tier and requirements.
|
|
34
|
+
|
|
35
|
+
Validation reports the warning `navigation-unverified` when a generator's
|
|
36
|
+
navigation is produced by something Doxloop cannot read statically: a Hugo
|
|
37
|
+
theme, a MkDocs navigation plugin, a Starlight plugin, a sidebar built by a
|
|
38
|
+
function or imported from another module, a Sphinx `autosummary` toctree, or
|
|
39
|
+
a Jekyll theme that derives navigation from front matter. The native strict
|
|
40
|
+
build, which every publish runs before it uploads, remains the authority in
|
|
41
|
+
those projects.
|
|
42
|
+
|
|
43
|
+
The active generator is shown under **Settings → Generator**. It is
|
|
44
|
+
deliberately read-only there: navigation, frontmatter, components, themes, and
|
|
45
|
+
route rules are not mechanically equivalent between generators, so Doxloop has
|
|
46
|
+
no in-place conversion.
|
|
14
47
|
|
|
15
48
|
To migrate:
|
|
16
49
|
|
|
17
|
-
1.
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
50
|
+
1. Open the control center from the folder where the new documentation project
|
|
51
|
+
should live and choose **New documentation project** with the target
|
|
52
|
+
generator.
|
|
53
|
+
2. Connect the same sources and enter the same documentation brief.
|
|
54
|
+
3. In the guidance step, ask the planner to preserve the agreed coverage while
|
|
55
|
+
translating content into the target generator's native format.
|
|
56
|
+
4. Review the proposal, comparing routes, navigation, metadata, components,
|
|
57
|
+
and theme behaviour with the existing site.
|
|
58
|
+
5. Use **Preview docs**, then publish: every publish runs the target
|
|
59
|
+
generator's strict build first and stops before uploading if it fails.
|
|
23
60
|
6. Redirect changed public URLs before replacing the existing site.
|
|
24
61
|
|
|
25
62
|
Keep the original project until the new site passes validation and route review.
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
# Import Mintlify documentation
|
|
2
|
+
|
|
3
|
+
Doxloop converts an existing Mintlify project into a new Doxbrix documentation
|
|
4
|
+
workspace. Docusaurus, MkDocs, and other supported generators continue to use
|
|
5
|
+
their native existing-site adoption flow.
|
|
6
|
+
|
|
7
|
+
## Select and convert
|
|
8
|
+
|
|
9
|
+
1. Start `doxloop ui`.
|
|
10
|
+
2. In setup, choose **Use existing documentation folder**, then **Mintlify to
|
|
11
|
+
Doxbrix**. From an open workspace, use the project switcher → **Import
|
|
12
|
+
existing documentation…**.
|
|
13
|
+
3. Choose **Local folder** and browse to the Mintlify project, or choose
|
|
14
|
+
**GitHub repository** and enter its URL or `owner/repository`.
|
|
15
|
+
4. Leave the branch blank to use GitHub's default branch. Doxloop finds a single
|
|
16
|
+
nested Mintlify site automatically; specify a documentation subfolder when
|
|
17
|
+
the repository contains several sites. Private repositories use local Git
|
|
18
|
+
credentials, or an access token entered under **Private repository access**.
|
|
19
|
+
5. Choose **Review conversion**. Check the page, asset, navigation-space, and
|
|
20
|
+
redirect counts and any unsupported constructs or unresolved API references.
|
|
21
|
+
6. Choose a new output folder outside the original repository. The parent folder
|
|
22
|
+
must already exist. Existing destinations are never overwritten.
|
|
23
|
+
7. Choose **Convert and open Doxbrix project**, then **Open documentation**.
|
|
24
|
+
|
|
25
|
+
The preview is a frozen conversion snapshot, including assets. Submitting it
|
|
26
|
+
does not rerun conversion against potentially changed source files. An
|
|
27
|
+
inspection expires after 30 minutes; inspect again if it expires.
|
|
28
|
+
|
|
29
|
+
## Update and publish
|
|
30
|
+
|
|
31
|
+
Review the converted pages in **Pages** and use **Preview docs**. Direct editing,
|
|
32
|
+
scoped agent changes, review proposals, and undo use the same workflow as any
|
|
33
|
+
other Doxbrix project.
|
|
34
|
+
|
|
35
|
+
Connect product code or an API specification in **Sources** before asking
|
|
36
|
+
Doxloop to verify product claims or keep documentation synchronized. Conversion
|
|
37
|
+
does not establish factual correctness: every imported page starts unverified,
|
|
38
|
+
and the original Mintlify repository is recorded as migration provenance rather
|
|
39
|
+
than automatically configured as product evidence.
|
|
40
|
+
|
|
41
|
+
Use **Deploy → Doxbrix** to sign in, run a dry run, and publish. Import itself
|
|
42
|
+
needs neither an agent run nor a Doxbrix account.
|
|
43
|
+
|
|
44
|
+
## Conversion fidelity and reports
|
|
45
|
+
|
|
46
|
+
Versioned projects show a sidebar version selector in the Doxbrix reader. Tabs
|
|
47
|
+
and navigation belong to the selected version, and the manifest's `default` or
|
|
48
|
+
`isDefault` entry controls the landing page. Shared pages retain the selected
|
|
49
|
+
version in preview and static exports. The navigation editor also separates
|
|
50
|
+
versions and preserves their metadata when saving changes.
|
|
51
|
+
|
|
52
|
+
The bundled Doxbrix SDK converter and CLI file helpers handle the native
|
|
53
|
+
manifest, navigation, branding, versions/locales, Markdown/MDX, supported
|
|
54
|
+
components, reusable snippets, images, fonts, media, and API specifications.
|
|
55
|
+
The same OpenAPI materializer used by the CLI expands navigation-generated
|
|
56
|
+
endpoint pages. Remote specifications use Doxloop's bounded public-URL fetcher.
|
|
57
|
+
|
|
58
|
+
Unsupported constructs and unresolved API sources appear before import and
|
|
59
|
+
require explicit acknowledgement. Review these pages before publishing; custom
|
|
60
|
+
components and source-platform behavior cannot always be represented exactly.
|
|
61
|
+
Custom source CSS and application code are not copied as executable tooling.
|
|
62
|
+
|
|
63
|
+
The project stores its source location or repository/branch/commit, conversion
|
|
64
|
+
counts, redirects, unsupported constructs, and warnings in
|
|
65
|
+
`.doxloop/mintlify-import.json`. Credentials are not stored there. Redirects are
|
|
66
|
+
also retained in the native manifest and Doxloop's redirect metadata.
|
|
67
|
+
|
|
68
|
+
The converter source and original regression tests are vendored without changes.
|
|
69
|
+
See `vendor/doxbrix-import/README.md` and its file-hash manifest for provenance
|
|
70
|
+
and refresh instructions. The conversion runtime ships inside the Doxloop
|
|
71
|
+
package and does not require a separate CLI installation.
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# Remote OpenAPI safety policy
|
|
2
|
+
|
|
3
|
+
Doxloop treats remote OpenAPI URLs as untrusted input. Connection tests on the
|
|
4
|
+
**Sources** page, discovery and planning, coverage, and monitoring checks all
|
|
5
|
+
use the same versioned OpenAPI connector and enforce these controls:
|
|
6
|
+
|
|
7
|
+
- only HTTP and HTTPS URLs without embedded credentials are accepted;
|
|
8
|
+
- localhost, `.local` names, private, loopback, link-local, multicast, and
|
|
9
|
+
reserved IP ranges are rejected after DNS resolution on every redirect;
|
|
10
|
+
- redirects are handled manually and limited to three;
|
|
11
|
+
- requests time out after 15 seconds and response bodies are limited to 5 MB;
|
|
12
|
+
- JSON, YAML, plain-text, or octet-stream responses are accepted only when the
|
|
13
|
+
payload parses as a valid OpenAPI 3.x or Swagger 2.0 document; other content
|
|
14
|
+
types require a `.json`, `.yaml`, or `.yml` URL path;
|
|
15
|
+
- HTTP credentials are never persisted. Private specifications should use a
|
|
16
|
+
public, credential-free, or deliberately short-lived pre-signed URL, or be
|
|
17
|
+
uploaded as a file from the **Add source** dialog;
|
|
18
|
+
- ETag and Last-Modified validators are retained in the local, mode-0600 cache.
|
|
19
|
+
Cached specification bodies stay under `.doxloop/cache/` and are excluded
|
|
20
|
+
from proposals and deployments.
|
|
21
|
+
|
|
22
|
+
Structural snapshots hash operations, parameters, request bodies, responses,
|
|
23
|
+
security, examples, schemas, and security schemes. A remote change therefore
|
|
24
|
+
marks only evidence-mapped operations and schemas stale instead of treating the
|
|
25
|
+
entire specification as an opaque file.
|