@diff-review-system/drs 4.1.0 → 5.0.0-rc.1

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 (145) hide show
  1. package/.pi/agents/task/okf-wiki-maintainer.md +72 -0
  2. package/.pi/workflows/github-pr-fix-review-issues-stacked.yaml +2 -0
  3. package/.pi/workflows/github-pr-review-post.yaml +29 -19
  4. package/.pi/workflows/github-pr-review.yaml +23 -0
  5. package/.pi/workflows/github-pr-update-agents-md-stacked.yaml +2 -0
  6. package/.pi/workflows/gitlab-mr-fix-review-issues-stacked.yaml +2 -0
  7. package/.pi/workflows/gitlab-mr-review.yaml +6 -0
  8. package/.pi/workflows/gitlab-mr-update-agents-md-stacked.yaml +2 -0
  9. package/.pi/workflows/release-changelog-finalize.yaml +10 -0
  10. package/.pi/workflows/repository-wiki-check.yaml +40 -0
  11. package/.pi/workflows/repository-wiki-sync.yaml +187 -0
  12. package/.wiki-site/.vitepress/config.mts +452 -0
  13. package/.wiki-site/.vitepress/theme/PageLead.vue +122 -0
  14. package/.wiki-site/.vitepress/theme/index.ts +12 -0
  15. package/.wiki-site/.vitepress/theme/style.css +270 -0
  16. package/README.md +38 -4
  17. package/dist/cli/index.js +3 -127
  18. package/dist/cli/index.js.map +1 -1
  19. package/dist/cli/init.d.ts.map +1 -1
  20. package/dist/cli/init.js +0 -3
  21. package/dist/cli/init.js.map +1 -1
  22. package/dist/cli/run-agent.d.ts +3 -0
  23. package/dist/cli/run-agent.d.ts.map +1 -1
  24. package/dist/cli/run-agent.js +56 -5
  25. package/dist/cli/run-agent.js.map +1 -1
  26. package/dist/cli/wiki.d.ts +3 -0
  27. package/dist/cli/wiki.d.ts.map +1 -0
  28. package/dist/cli/wiki.js +174 -0
  29. package/dist/cli/wiki.js.map +1 -0
  30. package/dist/cli/workflow.d.ts +2 -0
  31. package/dist/cli/workflow.d.ts.map +1 -1
  32. package/dist/cli/workflow.js +344 -31
  33. package/dist/cli/workflow.js.map +1 -1
  34. package/dist/github/client.d.ts.map +1 -1
  35. package/dist/github/client.js +2 -2
  36. package/dist/github/client.js.map +1 -1
  37. package/dist/github/platform-adapter.d.ts.map +1 -1
  38. package/dist/github/platform-adapter.js +15 -1
  39. package/dist/github/platform-adapter.js.map +1 -1
  40. package/dist/gitlab/client.d.ts +4 -0
  41. package/dist/gitlab/client.d.ts.map +1 -1
  42. package/dist/gitlab/client.js +17 -1
  43. package/dist/gitlab/client.js.map +1 -1
  44. package/dist/gitlab/platform-adapter.d.ts.map +1 -1
  45. package/dist/gitlab/platform-adapter.js +17 -1
  46. package/dist/gitlab/platform-adapter.js.map +1 -1
  47. package/dist/lib/agent-permissions.d.ts +44 -0
  48. package/dist/lib/agent-permissions.d.ts.map +1 -0
  49. package/dist/lib/agent-permissions.js +358 -0
  50. package/dist/lib/agent-permissions.js.map +1 -0
  51. package/dist/lib/agent-result.d.ts +2 -0
  52. package/dist/lib/agent-result.d.ts.map +1 -1
  53. package/dist/lib/comment-poster.d.ts +1 -1
  54. package/dist/lib/comment-poster.d.ts.map +1 -1
  55. package/dist/lib/comment-poster.js +38 -16
  56. package/dist/lib/comment-poster.js.map +1 -1
  57. package/dist/lib/config.d.ts +6 -1
  58. package/dist/lib/config.d.ts.map +1 -1
  59. package/dist/lib/config.js +17 -0
  60. package/dist/lib/config.js.map +1 -1
  61. package/dist/lib/error-comment-poster.d.ts +1 -1
  62. package/dist/lib/error-comment-poster.d.ts.map +1 -1
  63. package/dist/lib/error-comment-poster.js +15 -7
  64. package/dist/lib/error-comment-poster.js.map +1 -1
  65. package/dist/lib/okf-wiki.d.ts +65 -0
  66. package/dist/lib/okf-wiki.d.ts.map +1 -0
  67. package/dist/lib/okf-wiki.js +647 -0
  68. package/dist/lib/okf-wiki.js.map +1 -0
  69. package/dist/lib/platform-client.d.ts +2 -0
  70. package/dist/lib/platform-client.d.ts.map +1 -1
  71. package/dist/lib/project-setup.d.ts +0 -3
  72. package/dist/lib/project-setup.d.ts.map +1 -1
  73. package/dist/lib/project-setup.js +1 -15
  74. package/dist/lib/project-setup.js.map +1 -1
  75. package/dist/lib/review-artifact.d.ts +11 -1
  76. package/dist/lib/review-artifact.d.ts.map +1 -1
  77. package/dist/lib/review-artifact.js +202 -0
  78. package/dist/lib/review-artifact.js.map +1 -1
  79. package/dist/lib/review-orchestrator.d.ts +6 -1
  80. package/dist/lib/review-orchestrator.d.ts.map +1 -1
  81. package/dist/lib/review-orchestrator.js +3 -1
  82. package/dist/lib/review-orchestrator.js.map +1 -1
  83. package/dist/lib/wiki-delta.d.ts +71 -0
  84. package/dist/lib/wiki-delta.d.ts.map +1 -0
  85. package/dist/lib/wiki-delta.js +524 -0
  86. package/dist/lib/wiki-delta.js.map +1 -0
  87. package/dist/lib/wiki-run-summary.d.ts +45 -0
  88. package/dist/lib/wiki-run-summary.d.ts.map +1 -0
  89. package/dist/lib/wiki-run-summary.js +168 -0
  90. package/dist/lib/wiki-run-summary.js.map +1 -0
  91. package/dist/lib/wiki-search.d.ts +24 -0
  92. package/dist/lib/wiki-search.d.ts.map +1 -0
  93. package/dist/lib/wiki-search.js +200 -0
  94. package/dist/lib/wiki-search.js.map +1 -0
  95. package/dist/lib/wiki-site-graph.d.ts +33 -0
  96. package/dist/lib/wiki-site-graph.d.ts.map +1 -0
  97. package/dist/lib/wiki-site-graph.js +446 -0
  98. package/dist/lib/wiki-site-graph.js.map +1 -0
  99. package/dist/lib/wiki-site-safety.d.ts +6 -0
  100. package/dist/lib/wiki-site-safety.d.ts.map +1 -0
  101. package/dist/lib/wiki-site-safety.js +83 -0
  102. package/dist/lib/wiki-site-safety.js.map +1 -0
  103. package/dist/lib/wiki-site-smoke.d.ts +16 -0
  104. package/dist/lib/wiki-site-smoke.d.ts.map +1 -0
  105. package/dist/lib/wiki-site-smoke.js +270 -0
  106. package/dist/lib/wiki-site-smoke.js.map +1 -0
  107. package/dist/lib/wiki-site.d.ts +26 -0
  108. package/dist/lib/wiki-site.d.ts.map +1 -0
  109. package/dist/lib/wiki-site.js +221 -0
  110. package/dist/lib/wiki-site.js.map +1 -0
  111. package/dist/lib/workflow/planning.d.ts +1 -0
  112. package/dist/lib/workflow/planning.d.ts.map +1 -1
  113. package/dist/lib/workflow/planning.js +53 -2
  114. package/dist/lib/workflow/planning.js.map +1 -1
  115. package/dist/lib/workflow/types.d.ts +5 -0
  116. package/dist/lib/workflow/types.d.ts.map +1 -1
  117. package/dist/lib/workflow-artifacts.d.ts.map +1 -1
  118. package/dist/lib/workflow-artifacts.js +23 -1
  119. package/dist/lib/workflow-artifacts.js.map +1 -1
  120. package/dist/pi/sdk.d.ts.map +1 -1
  121. package/dist/pi/sdk.js +270 -17
  122. package/dist/pi/sdk.js.map +1 -1
  123. package/dist/runtime/built-in-paths.d.ts +0 -1
  124. package/dist/runtime/built-in-paths.d.ts.map +1 -1
  125. package/dist/runtime/built-in-paths.js +0 -7
  126. package/dist/runtime/built-in-paths.js.map +1 -1
  127. package/dist/runtime/client.d.ts +3 -0
  128. package/dist/runtime/client.d.ts.map +1 -1
  129. package/dist/runtime/client.js +4 -0
  130. package/dist/runtime/client.js.map +1 -1
  131. package/dist/temporal/executor.d.ts.map +1 -1
  132. package/dist/temporal/executor.js +9 -2
  133. package/dist/temporal/executor.js.map +1 -1
  134. package/dist/temporal/retry-policy.d.ts +1 -1
  135. package/dist/temporal/retry-policy.d.ts.map +1 -1
  136. package/dist/temporal/retry-policy.js +6 -1
  137. package/dist/temporal/retry-policy.js.map +1 -1
  138. package/dist/temporal/workflows.d.ts.map +1 -1
  139. package/dist/temporal/workflows.js +16 -3
  140. package/dist/temporal/workflows.js.map +1 -1
  141. package/package.json +23 -13
  142. package/dist/lib/skills.d.ts +0 -16
  143. package/dist/lib/skills.d.ts.map +0 -1
  144. package/dist/lib/skills.js +0 -140
  145. package/dist/lib/skills.js.map +0 -1
@@ -0,0 +1,270 @@
1
+ import { readWikiSiteOkfVersion } from './wiki-site-safety.js';
2
+ export async function checkWikiSite(value, options = {}) {
3
+ const baseUrl = normalizeSiteUrl(value);
4
+ const fetchImplementation = options.fetch ?? fetch;
5
+ const timeoutMs = options.timeoutMs ?? 15_000;
6
+ const requiredUrls = {
7
+ graph: new URL('graph.html', baseUrl),
8
+ llms: new URL('llms.txt', baseUrl),
9
+ rawIndex: new URL('okf/index.md', baseUrl),
10
+ sitemap: new URL('sitemap.xml', baseUrl),
11
+ };
12
+ const [root, graph, llms, rawIndex, sitemap] = await Promise.all([
13
+ fetchResource(baseUrl, fetchImplementation, timeoutMs, baseUrl),
14
+ fetchResource(requiredUrls.graph, fetchImplementation, timeoutMs, baseUrl),
15
+ fetchResource(requiredUrls.llms, fetchImplementation, timeoutMs, baseUrl),
16
+ fetchResource(requiredUrls.rawIndex, fetchImplementation, timeoutMs, baseUrl),
17
+ fetchResource(requiredUrls.sitemap, fetchImplementation, timeoutMs, baseUrl),
18
+ ]);
19
+ if (!root.content.includes('id="local-search"') ||
20
+ !/\\*"provider\\*":\\*"local\\*"/.test(root.content)) {
21
+ throw new Error(`Wiki site ${baseUrl.href} is missing its local search index marker.`);
22
+ }
23
+ const graphConceptUrls = extractGraphConceptUrls(graph.content, graph.url, baseUrl);
24
+ if (!llms.content.startsWith('# ') || !llms.content.includes('/okf/index.md')) {
25
+ throw new Error(`Wiki site ${requiredUrls.llms.href} is not a valid llms.txt index.`);
26
+ }
27
+ const llmsUrls = extractLlmsUrls(llms.content, llms.url, baseUrl);
28
+ for (const requiredUrl of [requiredUrls.graph, requiredUrls.rawIndex, ...graphConceptUrls]) {
29
+ if (!llmsUrls.has(requiredUrl.href)) {
30
+ throw new Error(`Wiki site ${requiredUrls.llms.href} is missing required URL ${requiredUrl.href}.`);
31
+ }
32
+ }
33
+ if (readWikiSiteOkfVersion(rawIndex.content) !== '0.1') {
34
+ throw new Error(`Wiki site ${requiredUrls.rawIndex.href} is not an OKF v0.1 bundle index.`);
35
+ }
36
+ const pageUrls = extractSitemapUrls(sitemap.content, baseUrl);
37
+ if (pageUrls.length === 0) {
38
+ throw new Error(`Wiki site ${requiredUrls.sitemap.href} contains no pages.`);
39
+ }
40
+ const additionalPageUrls = pageUrls.filter((url) => url.href !== baseUrl.href);
41
+ const pages = await Promise.all(additionalPageUrls.map((url) => fetchResource(url, fetchImplementation, timeoutMs, baseUrl)));
42
+ const resources = new Map();
43
+ for (const page of [root, ...pages]) {
44
+ for (const url of extractInternalResources(page.content, page.url, baseUrl)) {
45
+ resources.set(url.href, url);
46
+ }
47
+ }
48
+ for (const url of graphConceptUrls)
49
+ resources.set(url.href, url);
50
+ for (const url of Object.values(requiredUrls))
51
+ resources.delete(url.href);
52
+ resources.delete(baseUrl.href);
53
+ for (const url of additionalPageUrls)
54
+ resources.delete(url.href);
55
+ await Promise.all([...resources.values()].map((url) => fetchResource(url, fetchImplementation, timeoutMs, baseUrl)));
56
+ return {
57
+ baseUrl: baseUrl.href,
58
+ pagesChecked: 1 + additionalPageUrls.length,
59
+ assetsChecked: resources.size + 4,
60
+ };
61
+ }
62
+ function extractGraphConceptUrls(content, graphUrl, baseUrl) {
63
+ const match = /<script[^>]*\bid=["']graph-data["'][^>]*>([\s\S]*?)<\/script>/i.exec(content);
64
+ if (!match?.[1]) {
65
+ throw new Error(`Wiki site ${graphUrl.href} is missing concept graph data.`);
66
+ }
67
+ let graph;
68
+ try {
69
+ graph = JSON.parse(match[1]);
70
+ }
71
+ catch {
72
+ throw new Error(`Wiki site ${graphUrl.href} contains invalid concept graph data.`);
73
+ }
74
+ if (graph === null || typeof graph !== 'object') {
75
+ throw new Error(`Wiki site ${graphUrl.href} contains invalid concept graph data.`);
76
+ }
77
+ const { nodes, edges, metrics } = graph;
78
+ const types = graph.types;
79
+ if (!Array.isArray(nodes) ||
80
+ nodes.length === 0 ||
81
+ !Array.isArray(edges) ||
82
+ metrics === null ||
83
+ typeof metrics !== 'object' ||
84
+ !Array.isArray(types) ||
85
+ !types.every((type) => typeof type === 'string')) {
86
+ throw new Error(`Wiki site ${graphUrl.href} contains invalid concept graph data.`);
87
+ }
88
+ const typeNames = new Set(types);
89
+ const nodeIds = new Set();
90
+ const urls = nodes.map((node) => {
91
+ if (node === null || typeof node !== 'object') {
92
+ throw new Error(`Wiki site ${graphUrl.href} contains invalid concept graph data.`);
93
+ }
94
+ const { color, description, href, id, title, type } = node;
95
+ if (typeof color !== 'string' ||
96
+ typeof description !== 'string' ||
97
+ typeof href !== 'string' ||
98
+ typeof id !== 'string' ||
99
+ typeof title !== 'string' ||
100
+ typeof type !== 'string' ||
101
+ !typeNames.has(type) ||
102
+ nodeIds.has(id)) {
103
+ throw new Error(`Wiki site ${graphUrl.href} contains invalid concept graph data.`);
104
+ }
105
+ nodeIds.add(id);
106
+ const url = new URL(href, graphUrl);
107
+ assertWithinBase(url, baseUrl);
108
+ return url;
109
+ });
110
+ const edgeKeys = new Set();
111
+ const neighbors = new Map([...nodeIds].map((id) => [id, new Set()]));
112
+ for (const edge of edges) {
113
+ if (edge === null || typeof edge !== 'object') {
114
+ throw new Error(`Wiki site ${graphUrl.href} contains invalid concept graph data.`);
115
+ }
116
+ const { source, target } = edge;
117
+ if (typeof source !== 'string' ||
118
+ typeof target !== 'string' ||
119
+ !nodeIds.has(source) ||
120
+ !nodeIds.has(target) ||
121
+ source === target) {
122
+ throw new Error(`Wiki site ${graphUrl.href} contains invalid concept graph data.`);
123
+ }
124
+ const key = `${source}\0${target}`;
125
+ if (edgeKeys.has(key)) {
126
+ throw new Error(`Wiki site ${graphUrl.href} contains invalid concept graph data.`);
127
+ }
128
+ edgeKeys.add(key);
129
+ neighbors.get(source)?.add(target);
130
+ neighbors.get(target)?.add(source);
131
+ }
132
+ const expectedMetrics = {
133
+ directedEdgeCount: edges.length,
134
+ nodeCount: nodes.length,
135
+ orphanConceptCount: [...neighbors.values()].filter((related) => related.size === 0).length,
136
+ weaklyConnectedConceptCount: [...neighbors.values()].filter((related) => related.size === 1)
137
+ .length,
138
+ };
139
+ for (const [name, value] of Object.entries(expectedMetrics)) {
140
+ if (metrics[name] !== value) {
141
+ throw new Error(`Wiki site ${graphUrl.href} contains invalid concept graph metrics.`);
142
+ }
143
+ }
144
+ return urls;
145
+ }
146
+ function extractLlmsUrls(content, llmsUrl, baseUrl) {
147
+ const urls = new Set();
148
+ for (const match of content.matchAll(/\]\(([^)\s]+)\)/g)) {
149
+ if (!match[1])
150
+ continue;
151
+ const url = new URL(match[1], llmsUrl);
152
+ if (url.origin !== baseUrl.origin)
153
+ continue;
154
+ assertWithinBase(url, baseUrl);
155
+ url.hash = '';
156
+ urls.add(url.href);
157
+ }
158
+ return urls;
159
+ }
160
+ export async function waitForWikiSite(value, options = {}) {
161
+ const attempts = options.attempts ?? 6;
162
+ const delayMs = options.delayMs ?? 5_000;
163
+ let lastError;
164
+ for (let attempt = 1; attempt <= attempts; attempt += 1) {
165
+ try {
166
+ return await checkWikiSite(value, options);
167
+ }
168
+ catch (error) {
169
+ lastError = error;
170
+ if (attempt < attempts)
171
+ await new Promise((resolve) => setTimeout(resolve, delayMs));
172
+ }
173
+ }
174
+ throw lastError;
175
+ }
176
+ function normalizeSiteUrl(value) {
177
+ const url = new URL(value);
178
+ if (url.protocol !== 'https:' && url.protocol !== 'http:') {
179
+ throw new Error(`Wiki site URL must use HTTP or HTTPS, received ${url.protocol}`);
180
+ }
181
+ url.hash = '';
182
+ url.search = '';
183
+ if (!url.pathname.endsWith('/'))
184
+ url.pathname += '/';
185
+ return url;
186
+ }
187
+ async function fetchResource(url, fetchImplementation, timeoutMs, baseUrl) {
188
+ let response;
189
+ try {
190
+ response = await fetchImplementation(url, {
191
+ redirect: 'follow',
192
+ signal: AbortSignal.timeout(timeoutMs),
193
+ });
194
+ }
195
+ catch (error) {
196
+ throw new Error(`Could not fetch wiki site resource ${url.href}: ${error instanceof Error ? error.message : String(error)}`);
197
+ }
198
+ if (!response.ok) {
199
+ throw new Error(`Wiki site resource ${url.href} returned HTTP ${response.status}.`);
200
+ }
201
+ const finalUrl = response.url ? new URL(response.url) : url;
202
+ assertWithinBase(finalUrl, baseUrl);
203
+ const contentType = response.headers.get('content-type') ?? '';
204
+ assertExpectedContentType(url, contentType);
205
+ return {
206
+ url: finalUrl,
207
+ content: await response.text(),
208
+ contentType,
209
+ };
210
+ }
211
+ function assertExpectedContentType(url, contentType) {
212
+ const mediaType = contentType.split(';', 1)[0]?.trim().toLowerCase() ?? '';
213
+ const path = url.pathname.toLowerCase();
214
+ let accepted;
215
+ if (path.endsWith('/') || path.endsWith('.html'))
216
+ accepted = /^text\/html$/;
217
+ else if (path.endsWith('.js'))
218
+ accepted = /^(?:application|text)\/(?:java|ecma)script$/;
219
+ else if (path.endsWith('.css'))
220
+ accepted = /^text\/css$/;
221
+ else if (path.endsWith('.xml'))
222
+ accepted = /^(?:application|text)\/xml$/;
223
+ else if (path.endsWith('.json'))
224
+ accepted = /^application\/json$/;
225
+ else if (path.endsWith('.txt'))
226
+ accepted = /^text\/plain$/;
227
+ else if (path.endsWith('.md'))
228
+ accepted = /^text\/(?:markdown|plain)$/;
229
+ if (accepted && !accepted.test(mediaType)) {
230
+ throw new Error(`Wiki site resource ${url.href} returned unexpected content type ${contentType || '(missing)'}.`);
231
+ }
232
+ }
233
+ function extractSitemapUrls(content, baseUrl) {
234
+ const urls = new Map();
235
+ for (const match of content.matchAll(/<loc>([^<]+)<\/loc>/g)) {
236
+ const rawUrl = match[1]?.replaceAll('&amp;', '&');
237
+ if (!rawUrl)
238
+ continue;
239
+ const url = new URL(rawUrl, baseUrl);
240
+ assertWithinBase(url, baseUrl);
241
+ url.hash = '';
242
+ urls.set(url.href, url);
243
+ }
244
+ return [...urls.values()].sort((left, right) => compareStrings(left.href, right.href));
245
+ }
246
+ function extractInternalResources(content, pageUrl, baseUrl) {
247
+ const resources = new Map();
248
+ for (const match of content.matchAll(/\b(?:href|src)="([^"]+)"/g)) {
249
+ const value = match[1];
250
+ if (!value || value.startsWith('#') || value.startsWith('data:'))
251
+ continue;
252
+ const url = new URL(value.replaceAll('&amp;', '&'), pageUrl);
253
+ if (url.origin !== baseUrl.origin)
254
+ continue;
255
+ assertWithinBase(url, baseUrl);
256
+ url.hash = '';
257
+ url.search = '';
258
+ resources.set(url.href, url);
259
+ }
260
+ return [...resources.values()];
261
+ }
262
+ function assertWithinBase(url, baseUrl) {
263
+ if (url.origin !== baseUrl.origin || !url.pathname.startsWith(baseUrl.pathname)) {
264
+ throw new Error(`Wiki site URL ${url.href} escapes configured base ${baseUrl.href}.`);
265
+ }
266
+ }
267
+ function compareStrings(left, right) {
268
+ return left < right ? -1 : left > right ? 1 : 0;
269
+ }
270
+ //# sourceMappingURL=wiki-site-smoke.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wiki-site-smoke.js","sourceRoot":"","sources":["../../src/lib/wiki-site-smoke.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ export interface WikiSiteOptions {
2
+ base?: string;
3
+ output?: string;
4
+ projectRoot?: string;
5
+ quiet?: boolean;
6
+ repository?: string;
7
+ siteUrl?: string;
8
+ source?: string;
9
+ title?: string;
10
+ }
11
+ export interface WikiSiteBuildResult {
12
+ base: string;
13
+ output: string;
14
+ source: string;
15
+ }
16
+ export interface WikiSiteServeOptions extends WikiSiteOptions {
17
+ host?: string;
18
+ port?: number;
19
+ }
20
+ export interface WikiSiteServer {
21
+ close(): Promise<void>;
22
+ urls: string[];
23
+ }
24
+ export declare function buildWikiSite(options?: WikiSiteOptions): Promise<WikiSiteBuildResult>;
25
+ export declare function serveWikiSite(options?: WikiSiteServeOptions): Promise<WikiSiteServer>;
26
+ //# sourceMappingURL=wiki-site.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wiki-site.d.ts","sourceRoot":"","sources":["../../src/lib/wiki-site.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,eAAe;IAC9B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,oBAAqB,SAAQ,eAAe;IAC3D,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB;AAkBD,wBAAsB,aAAa,CAAC,OAAO,GAAE,eAAoB,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAoB/F;AAED,wBAAsB,aAAa,CAAC,OAAO,GAAE,oBAAyB,GAAG,OAAO,CAAC,cAAc,CAAC,CA0C/F"}
@@ -0,0 +1,221 @@
1
+ import { lstat, stat } from 'fs/promises';
2
+ import { basename, dirname, isAbsolute, relative, resolve, sep } from 'path';
3
+ import { fileURLToPath } from 'url';
4
+ import { build, createServer } from 'vitepress';
5
+ import { formatOkfValidationErrors, validateOkfBundle } from './okf-wiki.js';
6
+ import { normalizeWikiSiteBase } from './wiki-site-safety.js';
7
+ const moduleDirectory = dirname(fileURLToPath(import.meta.url));
8
+ const bundledSiteRoot = resolve(moduleDirectory, '../../.wiki-site');
9
+ let operationActive = false;
10
+ export async function buildWikiSite(options = {}) {
11
+ const releaseOperation = beginWikiSiteOperation();
12
+ try {
13
+ const resolved = await resolveWikiSiteOptions(options);
14
+ const restoreEnvironment = applyWikiSiteEnvironment(resolved);
15
+ const restoreOutput = resolved.quiet ? suppressProcessOutput() : () => { };
16
+ try {
17
+ await build(resolved.siteRoot, { base: resolved.base });
18
+ }
19
+ finally {
20
+ restoreOutput();
21
+ restoreEnvironment();
22
+ }
23
+ return {
24
+ base: resolved.base,
25
+ output: resolved.output,
26
+ source: resolved.source,
27
+ };
28
+ }
29
+ finally {
30
+ releaseOperation();
31
+ }
32
+ }
33
+ export async function serveWikiSite(options = {}) {
34
+ const releaseOperation = beginWikiSiteOperation();
35
+ try {
36
+ const host = options.host ?? '127.0.0.1';
37
+ const port = options.port ?? 4173;
38
+ const base = normalizeWikiSiteBase(options.base ?? '/');
39
+ const resolved = await resolveWikiSiteOptions({
40
+ ...options,
41
+ siteUrl: options.siteUrl ?? localWikiSiteUrl(host, port, base),
42
+ });
43
+ const restoreEnvironment = applyWikiSiteEnvironment(resolved);
44
+ try {
45
+ const server = await createServer(resolved.siteRoot, {
46
+ base: resolved.base,
47
+ host,
48
+ port,
49
+ strictPort: true,
50
+ });
51
+ await server.listen();
52
+ const urls = [...(server.resolvedUrls?.local ?? []), ...(server.resolvedUrls?.network ?? [])];
53
+ let closed = false;
54
+ return {
55
+ urls,
56
+ async close() {
57
+ if (closed)
58
+ return;
59
+ closed = true;
60
+ try {
61
+ await server.close();
62
+ }
63
+ finally {
64
+ restoreEnvironment();
65
+ releaseOperation();
66
+ }
67
+ },
68
+ };
69
+ }
70
+ catch (error) {
71
+ restoreEnvironment();
72
+ throw error;
73
+ }
74
+ }
75
+ catch (error) {
76
+ releaseOperation();
77
+ throw error;
78
+ }
79
+ }
80
+ async function resolveWikiSiteOptions(options) {
81
+ const projectRoot = resolve(options.projectRoot ?? process.cwd());
82
+ const source = resolveProjectPath(projectRoot, options.source ?? 'wiki', 'Wiki source');
83
+ const output = resolveProjectPath(projectRoot, options.output ?? '.drs/wiki-site', 'Wiki site output');
84
+ if (isPathWithin(source, output) || isPathWithin(output, source)) {
85
+ throw new Error('Wiki source and site output must be separate directories.');
86
+ }
87
+ const sourceStatus = await stat(source).catch(() => null);
88
+ if (!sourceStatus?.isDirectory()) {
89
+ throw new Error(`Wiki source directory does not exist: ${source}`);
90
+ }
91
+ const sourcePath = relative(projectRoot, source);
92
+ const validation = await validateOkfBundle(projectRoot, sourcePath);
93
+ if (!validation.valid) {
94
+ throw new Error(`Cannot render invalid OKF bundle:\n${formatOkfValidationErrors(validation)}`);
95
+ }
96
+ await assertNoSymlinkAncestors(projectRoot, output, 'Wiki site output');
97
+ const siteStatus = await stat(bundledSiteRoot).catch(() => null);
98
+ if (!siteStatus?.isDirectory()) {
99
+ throw new Error(`Bundled wiki site adapter is missing: ${bundledSiteRoot}`);
100
+ }
101
+ const base = normalizeWikiSiteBase(options.base ?? '/');
102
+ const repository = options.repository ?? process.env.GITHUB_REPOSITORY ?? '';
103
+ if (repository && !/^[^/\s]+\/[^/\s]+$/.test(repository)) {
104
+ throw new Error(`Repository must use owner/name format, received ${repository}`);
105
+ }
106
+ const repositoryName = repository.split('/')[1] || basename(projectRoot);
107
+ const siteUrl = normalizeSiteUrl(options.siteUrl ??
108
+ (repository
109
+ ? `https://${repository.split('/')[0]}.github.io/${repositoryName}`
110
+ : `http://localhost:4173${base === '/' ? '' : base.slice(0, -1)}`));
111
+ return {
112
+ base,
113
+ output,
114
+ projectRoot,
115
+ quiet: options.quiet ?? false,
116
+ repository,
117
+ siteRoot: bundledSiteRoot,
118
+ siteUrl,
119
+ source,
120
+ title: options.title ?? `${repositoryName} Knowledge Map`,
121
+ };
122
+ }
123
+ function beginWikiSiteOperation() {
124
+ if (operationActive) {
125
+ throw new Error('Another wiki site build or server is already active in this process.');
126
+ }
127
+ operationActive = true;
128
+ let released = false;
129
+ return () => {
130
+ if (released)
131
+ return;
132
+ released = true;
133
+ operationActive = false;
134
+ };
135
+ }
136
+ async function assertNoSymlinkAncestors(projectRoot, targetPath, label) {
137
+ const relativePath = relative(projectRoot, targetPath);
138
+ let currentPath = projectRoot;
139
+ for (const part of relativePath.split(sep).filter(Boolean)) {
140
+ currentPath = resolve(currentPath, part);
141
+ try {
142
+ if ((await lstat(currentPath)).isSymbolicLink()) {
143
+ throw new Error(`${label} cannot contain symbolic links: ${relativePath}`);
144
+ }
145
+ }
146
+ catch (error) {
147
+ if (isMissingPathError(error))
148
+ return;
149
+ throw error;
150
+ }
151
+ }
152
+ }
153
+ function localWikiSiteUrl(host, port, base) {
154
+ const publicHost = host === '0.0.0.0' || host === '::' ? 'localhost' : host;
155
+ const formattedHost = publicHost.includes(':') ? `[${publicHost}]` : publicHost;
156
+ return `http://${formattedHost}:${port}${base === '/' ? '' : base.slice(0, -1)}`;
157
+ }
158
+ function isMissingPathError(error) {
159
+ return (error !== null &&
160
+ typeof error === 'object' &&
161
+ 'code' in error &&
162
+ error.code === 'ENOENT');
163
+ }
164
+ function resolveProjectPath(projectRoot, value, label) {
165
+ const absolutePath = resolve(projectRoot, value);
166
+ const relativePath = relative(projectRoot, absolutePath);
167
+ if (isAbsolute(relativePath) || relativePath === '..' || relativePath.startsWith(`..${sep}`)) {
168
+ throw new Error(`${label} must remain inside the project root: ${value}`);
169
+ }
170
+ return absolutePath;
171
+ }
172
+ function isPathWithin(parent, child) {
173
+ const relativePath = relative(parent, child);
174
+ return (relativePath === '' ||
175
+ (!isAbsolute(relativePath) && relativePath !== '..' && !relativePath.startsWith(`..${sep}`)));
176
+ }
177
+ function normalizeSiteUrl(value) {
178
+ const url = new URL(value);
179
+ if (url.protocol !== 'https:' && url.protocol !== 'http:') {
180
+ throw new Error(`Wiki site URL must use HTTP or HTTPS, received ${url.protocol}`);
181
+ }
182
+ url.hash = '';
183
+ url.search = '';
184
+ return url.href.replace(/\/$/, '');
185
+ }
186
+ function applyWikiSiteEnvironment(options) {
187
+ const values = {
188
+ DRS_WIKI_SITE_OUTPUT: options.output,
189
+ DRS_WIKI_SITE_PROJECT_ROOT: options.projectRoot,
190
+ DRS_WIKI_SITE_QUIET: String(options.quiet),
191
+ DRS_WIKI_SITE_REPOSITORY: options.repository,
192
+ DRS_WIKI_SITE_SOURCE: options.source,
193
+ DRS_WIKI_SITE_TITLE: options.title,
194
+ WIKI_SITE_BASE: options.base,
195
+ WIKI_SITE_URL: options.siteUrl,
196
+ };
197
+ const previous = new Map();
198
+ for (const [key, value] of Object.entries(values)) {
199
+ previous.set(key, process.env[key]);
200
+ process.env[key] = value;
201
+ }
202
+ return () => {
203
+ for (const [key, value] of previous) {
204
+ if (value === undefined)
205
+ delete process.env[key];
206
+ else
207
+ process.env[key] = value;
208
+ }
209
+ };
210
+ }
211
+ function suppressProcessOutput() {
212
+ const stdoutWrite = process.stdout.write.bind(process.stdout);
213
+ const stderrWrite = process.stderr.write.bind(process.stderr);
214
+ process.stdout.write = () => true;
215
+ process.stderr.write = () => true;
216
+ return () => {
217
+ process.stdout.write = stdoutWrite;
218
+ process.stderr.write = stderrWrite;
219
+ };
220
+ }
221
+ //# sourceMappingURL=wiki-site.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wiki-site.js","sourceRoot":"","sources":["../../src/lib/wiki-site.ts"],"names":[],"mappings":"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"}
@@ -13,6 +13,7 @@ export declare function validateAllowedFields(nodeId: string, value: Record<stri
13
13
  export declare function validateWorkflowNodeShape(nodeId: string, node: WorkflowNodeConfig): void;
14
14
  export declare function validateWorkflowNodeKinds(nodes: Record<string, WorkflowNodeConfig>): void;
15
15
  export declare function hasWorkflowControlNodes(nodes: Record<string, WorkflowNodeConfig>): boolean;
16
+ export declare function isPotentialWorkspaceMutation(node: WorkflowNodeConfig): boolean;
16
17
  export declare function getWorkflowExecutionOrder(nodes: Record<string, WorkflowNodeConfig>): string[];
17
18
  export declare function getWorkflowNodes(workflowName: string, workflow: WorkflowConfig): Record<string, WorkflowNodeConfig>;
18
19
  export declare function getWorkflowExecutionWaves(nodes: Record<string, WorkflowNodeConfig>, executionOrder: string[]): string[][];
@@ -1 +1 @@
1
- {"version":3,"file":"planning.d.ts","sourceRoot":"","sources":["../../../src/lib/workflow/planning.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"planning.d.ts","sourceRoot":"","sources":["../../../src/lib/workflow/planning.ts"],"names":[],"mappings":"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"}