@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/sync.js ADDED
@@ -0,0 +1,221 @@
1
+ import { execFile } from 'node:child_process';
2
+ import { createHash } from 'node:crypto';
3
+ import { lstat, readFile, readlink, writeFile } from 'node:fs/promises';
4
+ import { join, resolve } from 'node:path';
5
+ import { promisify } from 'node:util';
6
+ import { pathExists, readJson } from './fs.js';
7
+ export const SYNC_STATE_FILE = join('.doxloop', 'sync-state.json');
8
+ const MAX_LISTED_FILES = 40;
9
+ const run = promisify(execFile);
10
+ export async function readSyncState(root) {
11
+ const path = join(root, SYNC_STATE_FILE);
12
+ if (!(await pathExists(path)))
13
+ return { schemaVersion: 1, sources: {} };
14
+ const state = await readJson(path);
15
+ if (state.schemaVersion !== 1 || !isSourceRecords(state.sources)) {
16
+ return { schemaVersion: 1, sources: {} };
17
+ }
18
+ return { schemaVersion: 1, sources: state.sources };
19
+ }
20
+ export async function recordSyncState(root, sources) {
21
+ const state = { schemaVersion: 1, sources: {} };
22
+ for (const source of sources) {
23
+ const commit = await headCommit(resolve(root, source.path));
24
+ if (commit) {
25
+ const sourcePath = resolve(root, source.path);
26
+ state.sources[source.name] = {
27
+ commit,
28
+ recordedAt: new Date().toISOString(),
29
+ contentFingerprint: await sourceContentFingerprint(sourcePath),
30
+ };
31
+ }
32
+ }
33
+ await writeFile(join(root, SYNC_STATE_FILE), `${JSON.stringify(state, null, 2)}\n`, 'utf8');
34
+ return state;
35
+ }
36
+ export async function collectSourceChanges(root, sources) {
37
+ const state = await readSyncState(root);
38
+ const changes = [];
39
+ for (const source of sources) {
40
+ const path = resolve(root, source.path);
41
+ if (!(await pathExists(path))) {
42
+ changes.push({ ...source, kind: 'missing-path' });
43
+ continue;
44
+ }
45
+ const head = await headCommit(path);
46
+ if (!head) {
47
+ changes.push({ ...source, kind: 'not-git' });
48
+ continue;
49
+ }
50
+ const uncommittedFiles = await uncommittedChanges(path);
51
+ const contentFingerprint = await sourceContentFingerprint(path);
52
+ const record = state.sources[source.name];
53
+ if (!record) {
54
+ changes.push({ ...source, kind: 'no-baseline', head, uncommittedFiles });
55
+ continue;
56
+ }
57
+ if (!(await commitExists(path, record.commit))) {
58
+ changes.push({ ...source, kind: 'baseline-lost', head, uncommittedFiles });
59
+ continue;
60
+ }
61
+ const matchesRecordedContent = record.contentFingerprint !== undefined &&
62
+ record.contentFingerprint === contentFingerprint;
63
+ const changedFiles = matchesRecordedContent
64
+ ? []
65
+ : await committedChanges(path, record.commit);
66
+ changes.push({
67
+ ...source,
68
+ kind: matchesRecordedContent || (changedFiles.length === 0 && uncommittedFiles.length === 0)
69
+ ? 'unchanged'
70
+ : 'changed',
71
+ baseline: record.commit,
72
+ head,
73
+ changedFiles,
74
+ uncommittedFiles: matchesRecordedContent ? [] : uncommittedFiles,
75
+ });
76
+ }
77
+ return changes;
78
+ }
79
+ export function formatSourceChanges(changes) {
80
+ if (changes.length === 0)
81
+ return '';
82
+ const sections = changes.map((change) => {
83
+ const heading = `Source "${change.name}" (${change.path})`;
84
+ switch (change.kind) {
85
+ case 'missing-path':
86
+ return `${heading}: the configured path does not exist. Report this instead of guessing.`;
87
+ case 'not-git':
88
+ return `${heading}: not a Git repository, so no change baseline is available. Inspect the source directly.`;
89
+ case 'no-baseline':
90
+ return withUncommitted(`${heading}: no documentation sync baseline is recorded yet. Inspect the source directly; a baseline is recorded when this task completes.`, change.uncommittedFiles);
91
+ case 'baseline-lost':
92
+ return withUncommitted(`${heading}: the recorded baseline commit no longer exists (history rewritten?). Inspect the source directly; the baseline is re-recorded when this task completes.`, change.uncommittedFiles);
93
+ case 'unchanged':
94
+ return withUncommitted(`${heading}: no source-content changes since the last documentation sync (${short(change.baseline)}).`, change.uncommittedFiles);
95
+ case 'changed':
96
+ return withUncommitted(change.changedFiles.length > 0
97
+ ? `${heading}: changed since the last documentation sync (${short(change.baseline)} -> ${short(change.head)}).\nCommitted changes:\n${fileList(change.changedFiles)}\nInspect details with \`git -C ${change.path} diff ${short(change.baseline)}..HEAD -- <file>\`.`
98
+ : `${heading}: the working tree changed since the last documentation sync (${short(change.baseline)}).`, change.uncommittedFiles);
99
+ }
100
+ });
101
+ return `Source changes since the last documentation sync:\n\n${sections.join('\n\n')}`;
102
+ }
103
+ function withUncommitted(text, uncommittedFiles) {
104
+ if (uncommittedFiles.length === 0)
105
+ return text;
106
+ return `${text}\nUncommitted working-tree changes:\n${fileList(uncommittedFiles)}`;
107
+ }
108
+ function fileList(files) {
109
+ const listed = files.slice(0, MAX_LISTED_FILES).map((file) => `- ${file}`);
110
+ if (files.length > MAX_LISTED_FILES) {
111
+ listed.push(`- ...and ${files.length - MAX_LISTED_FILES} more files`);
112
+ }
113
+ return listed.join('\n');
114
+ }
115
+ function short(commit) {
116
+ return commit.slice(0, 12);
117
+ }
118
+ async function headCommit(path) {
119
+ const output = await git(path, ['rev-parse', 'HEAD']);
120
+ return output?.trim() || undefined;
121
+ }
122
+ async function commitExists(path, commit) {
123
+ return (await git(path, ['cat-file', '-e', `${commit}^{commit}`])) !== undefined;
124
+ }
125
+ async function committedChanges(path, baseline) {
126
+ const output = await git(path, [
127
+ 'diff',
128
+ '--name-status',
129
+ `${baseline}..HEAD`,
130
+ '--',
131
+ '.',
132
+ ]);
133
+ return lines(output);
134
+ }
135
+ async function uncommittedChanges(path) {
136
+ const output = await git(path, ['status', '--porcelain', '--', '.']);
137
+ return lines(output).map((line) => line.trim());
138
+ }
139
+ async function sourceContentFingerprint(path) {
140
+ const output = await git(path, [
141
+ 'ls-files',
142
+ '-co',
143
+ '--exclude-standard',
144
+ '-z',
145
+ ]);
146
+ const files = (output ?? '').split('\0').filter(Boolean).sort();
147
+ const hash = createHash('sha256');
148
+ for (const file of files) {
149
+ if (isSensitiveSourcePath(file))
150
+ continue;
151
+ const absolute = resolve(path, file);
152
+ let content;
153
+ try {
154
+ const stats = await lstat(absolute);
155
+ if (stats.isSymbolicLink()) {
156
+ content = `link:${await readlink(absolute)}`;
157
+ }
158
+ else if (stats.isFile()) {
159
+ content = await readFile(absolute);
160
+ }
161
+ }
162
+ catch (error) {
163
+ if (error.code === 'ENOENT')
164
+ continue;
165
+ throw error;
166
+ }
167
+ hash.update(file);
168
+ hash.update('\0');
169
+ if (content !== undefined)
170
+ hash.update(content);
171
+ hash.update('\0');
172
+ }
173
+ return hash.digest('hex');
174
+ }
175
+ function isSensitiveSourcePath(path) {
176
+ const segments = path.toLowerCase().split(/[\\/]/);
177
+ const name = segments.at(-1) ?? '';
178
+ return (segments.includes('.ssh') ||
179
+ (name === '.env' || (name.startsWith('.env.') && name !== '.env.example')) ||
180
+ name === 'credentials' ||
181
+ name === 'credentials.json' ||
182
+ name === 'id_rsa' ||
183
+ name === 'id_ed25519' ||
184
+ name.endsWith('.key') ||
185
+ name.endsWith('.pem') ||
186
+ name.endsWith('.p12') ||
187
+ name.endsWith('.pfx'));
188
+ }
189
+ function lines(output) {
190
+ return (output ?? '')
191
+ .split('\n')
192
+ .map((line) => line.trimEnd())
193
+ .filter(Boolean);
194
+ }
195
+ async function git(path, args) {
196
+ try {
197
+ const result = await run('git', ['-C', path, ...args], {
198
+ maxBuffer: 16 * 1024 * 1024,
199
+ });
200
+ return result.stdout;
201
+ }
202
+ catch {
203
+ // Missing git, not a repository, or an unknown commit all mean the same
204
+ // thing here: no baseline information is available for this source.
205
+ return undefined;
206
+ }
207
+ }
208
+ function isSourceRecords(value) {
209
+ return (value !== null &&
210
+ typeof value === 'object' &&
211
+ !Array.isArray(value) &&
212
+ Object.values(value).every((record) => record !== null &&
213
+ typeof record === 'object' &&
214
+ typeof record.commit === 'string' &&
215
+ typeof record.recordedAt === 'string' &&
216
+ (record.contentFingerprint ===
217
+ undefined ||
218
+ typeof record
219
+ .contentFingerprint === 'string')));
220
+ }
221
+ //# sourceMappingURL=sync.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync.js","sourceRoot":"","sources":["../src/sync.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AACvE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AACrC,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAG9C,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,CAAC,UAAU,EAAE,iBAAiB,CAAC,CAAA;AAElE,MAAM,gBAAgB,GAAG,EAAE,CAAA;AAE3B,MAAM,GAAG,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAA;AAE/B,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,IAAY;IAC9C,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,eAAe,CAAC,CAAA;IACxC,IAAI,CAAC,CAAC,MAAM,UAAU,CAAC,IAAI,CAAC,CAAC;QAAE,OAAO,EAAE,aAAa,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAA;IACvE,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAqB,IAAI,CAAC,CAAA;IACtD,IAAI,KAAK,CAAC,aAAa,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;QACjE,OAAO,EAAE,aAAa,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAA;IAC1C,CAAC;IACD,OAAO,EAAE,aAAa,EAAE,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAA;AACrD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,IAAY,EACZ,OAAwB;IAExB,MAAM,KAAK,GAAc,EAAE,aAAa,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAA;IAC1D,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAA;QAC3D,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,CAAA;YAC7C,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG;gBAC3B,MAAM;gBACN,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBACpC,kBAAkB,EAAE,MAAM,wBAAwB,CAAC,UAAU,CAAC;aAC/D,CAAA;QACH,CAAC;IACH,CAAC;IACD,MAAM,SAAS,CACb,IAAI,CAAC,IAAI,EAAE,eAAe,CAAC,EAC3B,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EACrC,MAAM,CACP,CAAA;IACD,OAAO,KAAK,CAAA;AACd,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,IAAY,EACZ,OAAwB;IAExB,MAAM,KAAK,GAAG,MAAM,aAAa,CAAC,IAAI,CAAC,CAAA;IACvC,MAAM,OAAO,GAAmB,EAAE,CAAA;IAClC,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,CAAA;QACvC,IAAI,CAAC,CAAC,MAAM,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;YAC9B,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC,CAAA;YACjD,SAAQ;QACV,CAAC;QACD,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,CAAA;QACnC,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAA;YAC5C,SAAQ;QACV,CAAC;QACD,MAAM,gBAAgB,GAAG,MAAM,kBAAkB,CAAC,IAAI,CAAC,CAAA;QACvD,MAAM,kBAAkB,GAAG,MAAM,wBAAwB,CAAC,IAAI,CAAC,CAAA;QAC/D,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;QACzC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAC,CAAA;YACxE,SAAQ;QACV,CAAC;QACD,IAAI,CAAC,CAAC,MAAM,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;YAC/C,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAC,CAAA;YAC1E,SAAQ;QACV,CAAC;QACD,MAAM,sBAAsB,GAC1B,MAAM,CAAC,kBAAkB,KAAK,SAAS;YACvC,MAAM,CAAC,kBAAkB,KAAK,kBAAkB,CAAA;QAClD,MAAM,YAAY,GAAG,sBAAsB;YACzC,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC,MAAM,gBAAgB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,CAAA;QAC/C,OAAO,CAAC,IAAI,CAAC;YACX,GAAG,MAAM;YACT,IAAI,EACF,sBAAsB,IAAI,CAAC,YAAY,CAAC,MAAM,KAAK,CAAC,IAAI,gBAAgB,CAAC,MAAM,KAAK,CAAC,CAAC;gBACpF,CAAC,CAAC,WAAW;gBACb,CAAC,CAAC,SAAS;YACf,QAAQ,EAAE,MAAM,CAAC,MAAM;YACvB,IAAI;YACJ,YAAY;YACZ,gBAAgB,EAAE,sBAAsB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,gBAAgB;SACjE,CAAC,CAAA;IACJ,CAAC;IACD,OAAO,OAAO,CAAA;AAChB,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,OAAuB;IACzD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAA;IACnC,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;QACtC,MAAM,OAAO,GAAG,WAAW,MAAM,CAAC,IAAI,MAAM,MAAM,CAAC,IAAI,GAAG,CAAA;QAC1D,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC;YACpB,KAAK,cAAc;gBACjB,OAAO,GAAG,OAAO,wEAAwE,CAAA;YAC3F,KAAK,SAAS;gBACZ,OAAO,GAAG,OAAO,0FAA0F,CAAA;YAC7G,KAAK,aAAa;gBAChB,OAAO,eAAe,CACpB,GAAG,OAAO,iIAAiI,EAC3I,MAAM,CAAC,gBAAgB,CACxB,CAAA;YACH,KAAK,eAAe;gBAClB,OAAO,eAAe,CACpB,GAAG,OAAO,0JAA0J,EACpK,MAAM,CAAC,gBAAgB,CACxB,CAAA;YACH,KAAK,WAAW;gBACd,OAAO,eAAe,CACpB,GAAG,OAAO,kEAAkE,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,EACtG,MAAM,CAAC,gBAAgB,CACxB,CAAA;YACH,KAAK,SAAS;gBACZ,OAAO,eAAe,CACpB,MAAM,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC;oBAC5B,CAAC,CAAC,GAAG,OAAO,gDAAgD,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,2BAA2B,QAAQ,CAAC,MAAM,CAAC,YAAY,CAAC,mCAAmC,MAAM,CAAC,IAAI,SAAS,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,qBAAqB;oBACrQ,CAAC,CAAC,GAAG,OAAO,iEAAiE,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,EACzG,MAAM,CAAC,gBAAgB,CACxB,CAAA;QACL,CAAC;IACH,CAAC,CAAC,CAAA;IACF,OAAO,wDAAwD,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAA;AACxF,CAAC;AAED,SAAS,eAAe,CAAC,IAAY,EAAE,gBAA0B;IAC/D,IAAI,gBAAgB,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAA;IAC9C,OAAO,GAAG,IAAI,wCAAwC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAA;AACpF,CAAC;AAED,SAAS,QAAQ,CAAC,KAAe;IAC/B,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,gBAAgB,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,CAAA;IAC1E,IAAI,KAAK,CAAC,MAAM,GAAG,gBAAgB,EAAE,CAAC;QACpC,MAAM,CAAC,IAAI,CAAC,YAAY,KAAK,CAAC,MAAM,GAAG,gBAAgB,aAAa,CAAC,CAAA;IACvE,CAAC;IACD,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AAC1B,CAAC;AAED,SAAS,KAAK,CAAC,MAAc;IAC3B,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;AAC5B,CAAC;AAED,KAAK,UAAU,UAAU,CAAC,IAAY;IACpC,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,CAAA;IACrD,OAAO,MAAM,EAAE,IAAI,EAAE,IAAI,SAAS,CAAA;AACpC,CAAC;AAED,KAAK,UAAU,YAAY,CAAC,IAAY,EAAE,MAAc;IACtD,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,UAAU,EAAE,IAAI,EAAE,GAAG,MAAM,WAAW,CAAC,CAAC,CAAC,KAAK,SAAS,CAAA;AAClF,CAAC;AAED,KAAK,UAAU,gBAAgB,CAAC,IAAY,EAAE,QAAgB;IAC5D,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE;QAC7B,MAAM;QACN,eAAe;QACf,GAAG,QAAQ,QAAQ;QACnB,IAAI;QACJ,GAAG;KACJ,CAAC,CAAA;IACF,OAAO,KAAK,CAAC,MAAM,CAAC,CAAA;AACtB,CAAC;AAED,KAAK,UAAU,kBAAkB,CAAC,IAAY;IAC5C,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE,aAAa,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,CAAA;IACpE,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAA;AACjD,CAAC;AAED,KAAK,UAAU,wBAAwB,CAAC,IAAY;IAClD,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE;QAC7B,UAAU;QACV,KAAK;QACL,oBAAoB;QACpB,IAAI;KACL,CAAC,CAAA;IACF,MAAM,KAAK,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAA;IAC/D,MAAM,IAAI,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAA;IACjC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,qBAAqB,CAAC,IAAI,CAAC;YAAE,SAAQ;QACzC,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;QACpC,IAAI,OAAoC,CAAA;QACxC,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,MAAM,KAAK,CAAC,QAAQ,CAAC,CAAA;YACnC,IAAI,KAAK,CAAC,cAAc,EAAE,EAAE,CAAC;gBAC3B,OAAO,GAAG,QAAQ,MAAM,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAA;YAC9C,CAAC;iBAAM,IAAI,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;gBAC1B,OAAO,GAAG,MAAM,QAAQ,CAAC,QAAQ,CAAC,CAAA;YACpC,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAK,KAA+B,CAAC,IAAI,KAAK,QAAQ;gBAAE,SAAQ;YAChE,MAAM,KAAK,CAAA;QACb,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;QACjB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;QACjB,IAAI,OAAO,KAAK,SAAS;YAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;QAC/C,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IACnB,CAAC;IACD,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;AAC3B,CAAC;AAED,SAAS,qBAAqB,CAAC,IAAY;IACzC,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;IAClD,MAAM,IAAI,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAA;IAClC,OAAO,CACL,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC;QACzB,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,IAAI,KAAK,cAAc,CAAC,CAAC;QAC1E,IAAI,KAAK,aAAa;QACtB,IAAI,KAAK,kBAAkB;QAC3B,IAAI,KAAK,QAAQ;QACjB,IAAI,KAAK,YAAY;QACrB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;QACrB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;QACrB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;QACrB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CACtB,CAAA;AACH,CAAC;AAED,SAAS,KAAK,CAAC,MAA0B;IACvC,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC;SAClB,KAAK,CAAC,IAAI,CAAC;SACX,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;SAC7B,MAAM,CAAC,OAAO,CAAC,CAAA;AACpB,CAAC;AAED,KAAK,UAAU,GAAG,CAAC,IAAY,EAAE,IAAc;IAC7C,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,EAAE;YACrD,SAAS,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI;SAC5B,CAAC,CAAA;QACF,OAAO,MAAM,CAAC,MAAM,CAAA;IACtB,CAAC;IAAC,MAAM,CAAC;QACP,wEAAwE;QACxE,oEAAoE;QACpE,OAAO,SAAS,CAAA;IAClB,CAAC;AACH,CAAC;AAED,SAAS,eAAe,CAAC,KAAc;IACrC,OAAO,CACL,KAAK,KAAK,IAAI;QACd,OAAO,KAAK,KAAK,QAAQ;QACzB,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QACrB,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CACxB,CAAC,MAAM,EAAE,EAAE,CACT,MAAM,KAAK,IAAI;YACf,OAAO,MAAM,KAAK,QAAQ;YAC1B,OAAQ,MAA+B,CAAC,MAAM,KAAK,QAAQ;YAC3D,OAAQ,MAAmC,CAAC,UAAU,KAAK,QAAQ;YACnE,CAAE,MAA2C,CAAC,kBAAkB;gBAC9D,SAAS;gBACT,OAAQ,MAA2C;qBAChD,kBAAkB,KAAK,QAAQ,CAAC,CACxC,CACF,CAAA;AACH,CAAC"}
@@ -0,0 +1,141 @@
1
+ export type AgentName = 'codex' | 'claude' | 'gemini';
2
+ export type GeneratorName = 'doxbrix' | 'docusaurus' | 'mkdocs' | 'sphinx' | 'hugo' | 'vitepress' | 'markdoc' | 'nextra' | 'starlight' | 'jekyll' | 'static';
3
+ export interface SourceBinding {
4
+ name: string;
5
+ path: string;
6
+ }
7
+ export interface DesignReference {
8
+ url: string;
9
+ }
10
+ export type ScreenshotPolicy = 'requested' | 'auto' | 'off';
11
+ export interface ApplicationScreenshots {
12
+ policy: ScreenshotPolicy;
13
+ viewport?: {
14
+ width: number;
15
+ height: number;
16
+ };
17
+ highlight?: boolean;
18
+ }
19
+ export interface ApplicationConfig {
20
+ baseUrl: string;
21
+ source?: string;
22
+ startCommand?: string;
23
+ readyPath?: string;
24
+ screenshots?: ApplicationScreenshots;
25
+ }
26
+ export type DocumentationExperienceLevel = 'beginner' | 'intermediate' | 'advanced' | 'mixed';
27
+ export interface DocumentationBrief {
28
+ primaryAudience?: string;
29
+ experienceLevel?: DocumentationExperienceLevel;
30
+ priorityOutcomes?: string[];
31
+ locale: string;
32
+ tone: string[];
33
+ standardsProfile: string;
34
+ styleGuide: string;
35
+ terminology: Record<string, string>;
36
+ exclusions: string[];
37
+ accessibilityTarget: string;
38
+ }
39
+ export interface DoxloopProject {
40
+ schemaVersion: 1;
41
+ title: string;
42
+ contentDir: string;
43
+ generator: GeneratorName;
44
+ generatorPackage?: string;
45
+ sources: SourceBinding[];
46
+ designReferences: DesignReference[];
47
+ application?: ApplicationConfig;
48
+ documentation: DocumentationBrief;
49
+ }
50
+ export type DoxbrixNavNode = {
51
+ type: 'page';
52
+ file: string;
53
+ title?: string;
54
+ icon?: string;
55
+ hidden?: boolean;
56
+ } | {
57
+ type: 'group';
58
+ label: string;
59
+ icon?: string;
60
+ hidden?: boolean;
61
+ items: DoxbrixNavNode[];
62
+ } | {
63
+ type: 'label';
64
+ text: string;
65
+ } | {
66
+ type: 'divider';
67
+ } | {
68
+ type: 'link';
69
+ title: string;
70
+ href: string;
71
+ icon?: string;
72
+ } | {
73
+ type: 'api';
74
+ title: string;
75
+ spec: string;
76
+ icon?: string;
77
+ };
78
+ export interface DoxbrixSpace {
79
+ name: string;
80
+ slug?: string;
81
+ locale?: string;
82
+ parent?: string;
83
+ icon?: string;
84
+ tag?: string;
85
+ nav: DoxbrixNavNode[];
86
+ }
87
+ export interface DoxbrixSiteConfig {
88
+ version: 1;
89
+ name?: string;
90
+ description?: string;
91
+ spaces: DoxbrixSpace[];
92
+ theme?: Record<string, unknown> | 'light' | 'dark' | 'system';
93
+ site?: Record<string, unknown>;
94
+ }
95
+ export interface SourceSyncRecord {
96
+ commit: string;
97
+ recordedAt: string;
98
+ contentFingerprint?: string;
99
+ }
100
+ export interface SyncState {
101
+ schemaVersion: 1;
102
+ sources: Record<string, SourceSyncRecord>;
103
+ }
104
+ export type SourceChange = SourceBinding & ({
105
+ kind: 'missing-path';
106
+ } | {
107
+ kind: 'not-git';
108
+ } | {
109
+ kind: 'no-baseline';
110
+ head: string;
111
+ uncommittedFiles: string[];
112
+ } | {
113
+ kind: 'baseline-lost';
114
+ head: string;
115
+ uncommittedFiles: string[];
116
+ } | {
117
+ kind: 'unchanged' | 'changed';
118
+ baseline: string;
119
+ head: string;
120
+ changedFiles: string[];
121
+ uncommittedFiles: string[];
122
+ });
123
+ export type IssueSeverity = 'error' | 'warning';
124
+ export interface ValidationIssue {
125
+ severity: IssueSeverity;
126
+ code: string;
127
+ message: string;
128
+ file?: string;
129
+ }
130
+ export interface ValidationResult {
131
+ issues: ValidationIssue[];
132
+ pages: string[];
133
+ errors: number;
134
+ warnings: number;
135
+ }
136
+ export interface ParsedArgs {
137
+ command?: string;
138
+ positionals: string[];
139
+ flags: Map<string, string[]>;
140
+ }
141
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js ADDED
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,4 @@
1
+ import type { ValidationResult } from './types.js';
2
+ export declare function validateProject(root: string): Promise<ValidationResult>;
3
+ export declare function formatValidation(result: ValidationResult): string;
4
+ //# sourceMappingURL=validation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../src/validation.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAGV,gBAAgB,EACjB,MAAM,YAAY,CAAA;AAEnB,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAqE7E;AAqqBD,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM,CASjE"}