@roackb2/heddle 1.0.3 → 1.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.
- package/dist/src/cli/chat/App.d.ts.map +1 -1
- package/dist/src/cli/chat/App.js +65 -48
- package/dist/src/cli/chat/App.js.map +1 -1
- package/dist/src/cli/chat/hooks/useChatSessions.d.ts +3 -2
- package/dist/src/cli/chat/hooks/useChatSessions.d.ts.map +1 -1
- package/dist/src/cli/chat/hooks/useChatSessions.js +23 -11
- package/dist/src/cli/chat/hooks/useChatSessions.js.map +1 -1
- package/dist/src/cli/chat/hooks/useChatStatusSummary.d.ts.map +1 -1
- package/dist/src/cli/chat/hooks/useChatStatusSummary.js +6 -2
- package/dist/src/cli/chat/hooks/useChatStatusSummary.js.map +1 -1
- package/dist/src/core/awareness/domain-prompt.d.ts +3 -0
- package/dist/src/core/awareness/domain-prompt.d.ts.map +1 -0
- package/dist/src/core/awareness/domain-prompt.js +30 -0
- package/dist/src/core/awareness/domain-prompt.js.map +1 -0
- package/dist/src/core/awareness/domains/coding/collectors/git.d.ts +9 -0
- package/dist/src/core/awareness/domains/coding/collectors/git.d.ts.map +1 -0
- package/dist/src/core/awareness/domains/coding/collectors/git.js +257 -0
- package/dist/src/core/awareness/domains/coding/collectors/git.js.map +1 -0
- package/dist/src/core/awareness/domains/coding/collectors/workspace-tree.d.ts +12 -0
- package/dist/src/core/awareness/domains/coding/collectors/workspace-tree.d.ts.map +1 -0
- package/dist/src/core/awareness/domains/coding/collectors/workspace-tree.js +126 -0
- package/dist/src/core/awareness/domains/coding/collectors/workspace-tree.js.map +1 -0
- package/dist/src/core/awareness/domains/coding/collectors/workspace.d.ts +14 -0
- package/dist/src/core/awareness/domains/coding/collectors/workspace.d.ts.map +1 -0
- package/dist/src/core/awareness/domains/coding/collectors/workspace.js +56 -0
- package/dist/src/core/awareness/domains/coding/collectors/workspace.js.map +1 -0
- package/dist/src/core/awareness/domains/coding/format.d.ts +3 -0
- package/dist/src/core/awareness/domains/coding/format.d.ts.map +1 -0
- package/dist/src/core/awareness/domains/coding/format.js +22 -0
- package/dist/src/core/awareness/domains/coding/format.js.map +1 -0
- package/dist/src/core/awareness/domains/coding/provider.d.ts +8 -0
- package/dist/src/core/awareness/domains/coding/provider.d.ts.map +1 -0
- package/dist/src/core/awareness/domains/coding/provider.js +42 -0
- package/dist/src/core/awareness/domains/coding/provider.js.map +1 -0
- package/dist/src/core/awareness/domains/coding/types.d.ts +56 -0
- package/dist/src/core/awareness/domains/coding/types.d.ts.map +1 -0
- package/dist/src/core/awareness/domains/coding/types.js +2 -0
- package/dist/src/core/awareness/domains/coding/types.js.map +1 -0
- package/dist/src/core/awareness/format.d.ts +7 -0
- package/dist/src/core/awareness/format.d.ts.map +1 -0
- package/dist/src/core/awareness/format.js +27 -0
- package/dist/src/core/awareness/format.js.map +1 -0
- package/dist/src/core/awareness/index.d.ts +7 -0
- package/dist/src/core/awareness/index.d.ts.map +1 -0
- package/dist/src/core/awareness/index.js +5 -0
- package/dist/src/core/awareness/index.js.map +1 -0
- package/dist/src/core/awareness/service.d.ts +8 -0
- package/dist/src/core/awareness/service.d.ts.map +1 -0
- package/dist/src/core/awareness/service.js +13 -0
- package/dist/src/core/awareness/service.js.map +1 -0
- package/dist/src/core/awareness/types.d.ts +37 -0
- package/dist/src/core/awareness/types.d.ts.map +1 -0
- package/dist/src/core/awareness/types.js +2 -0
- package/dist/src/core/awareness/types.js.map +1 -0
- package/dist/src/core/chat/engine/sessions/preferences/service.d.ts +23 -0
- package/dist/src/core/chat/engine/sessions/preferences/service.d.ts.map +1 -0
- package/dist/src/core/chat/engine/sessions/preferences/service.js +29 -0
- package/dist/src/core/chat/engine/sessions/preferences/service.js.map +1 -0
- package/dist/src/core/chat/engine/turns/runtime.d.ts.map +1 -1
- package/dist/src/core/chat/engine/turns/runtime.js +3 -2
- package/dist/src/core/chat/engine/turns/runtime.js.map +1 -1
- package/dist/src/core/commands/slash/modules/model/model-commands.d.ts.map +1 -1
- package/dist/src/core/commands/slash/modules/model/model-commands.js +14 -16
- package/dist/src/core/commands/slash/modules/model/model-commands.js.map +1 -1
- package/dist/src/core/llm/model-policy.js +4 -4
- package/dist/src/core/llm/model-policy.js.map +1 -1
- package/dist/src/core/prompts/system-prompt.d.ts.map +1 -1
- package/dist/src/core/prompts/system-prompt.js +1 -0
- package/dist/src/core/prompts/system-prompt.js.map +1 -1
- package/dist/src/core/runtime/default-tools.d.ts.map +1 -1
- package/dist/src/core/runtime/default-tools.js +2 -0
- package/dist/src/core/runtime/default-tools.js.map +1 -1
- package/dist/src/core/tools/toolkits/coding-awareness/project-dashboard.d.ts +7 -0
- package/dist/src/core/tools/toolkits/coding-awareness/project-dashboard.d.ts.map +1 -0
- package/dist/src/core/tools/toolkits/coding-awareness/project-dashboard.js +106 -0
- package/dist/src/core/tools/toolkits/coding-awareness/project-dashboard.js.map +1 -0
- package/dist/src/core/tools/toolkits/coding-awareness/toolkit.d.ts +3 -0
- package/dist/src/core/tools/toolkits/coding-awareness/toolkit.d.ts.map +1 -0
- package/dist/src/core/tools/toolkits/coding-awareness/toolkit.js +10 -0
- package/dist/src/core/tools/toolkits/coding-awareness/toolkit.js.map +1 -0
- package/dist/src/index.d.ts +2 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +1 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/web/assets/{MonacoDiffViewer-D_2D56lo.js → MonacoDiffViewer-vifX8i2F.js} +1 -1
- package/dist/src/web/assets/{index-Du00cqAD.js → index-vEln1ViW.js} +3 -3
- package/dist/src/web/index.html +1 -1
- package/package.json +2 -1
|
@@ -0,0 +1,257 @@
|
|
|
1
|
+
import { execFile } from 'node:child_process';
|
|
2
|
+
export async function collectGitWorkingEnvironment(workspaceRoot) {
|
|
3
|
+
const sources = [];
|
|
4
|
+
const limits = [];
|
|
5
|
+
const insideWorkTree = await runGit(workspaceRoot, ['rev-parse', '--is-inside-work-tree']);
|
|
6
|
+
sources.push({ kind: 'git', command: 'git rev-parse --is-inside-work-tree' });
|
|
7
|
+
if (insideWorkTree.exitCode !== 0 || insideWorkTree.stdout.trim() !== 'true') {
|
|
8
|
+
limits.push({
|
|
9
|
+
kind: 'not_applicable',
|
|
10
|
+
subject: 'git',
|
|
11
|
+
detail: 'Workspace is not inside a git work tree.',
|
|
12
|
+
});
|
|
13
|
+
return {
|
|
14
|
+
environment: createNonGitEnvironment(),
|
|
15
|
+
sources,
|
|
16
|
+
limits,
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
const [repoRootResult, branchResult, commitResult, statusResult] = await Promise.all([
|
|
20
|
+
runGit(workspaceRoot, ['rev-parse', '--show-toplevel']),
|
|
21
|
+
runGit(workspaceRoot, ['branch', '--show-current']),
|
|
22
|
+
runGit(workspaceRoot, ['rev-parse', '--short', 'HEAD']),
|
|
23
|
+
runGit(workspaceRoot, ['status', '--porcelain=v1', '-z', '--untracked-files=all']),
|
|
24
|
+
]);
|
|
25
|
+
sources.push({ kind: 'git', command: 'git rev-parse --show-toplevel' }, { kind: 'git', command: 'git branch --show-current' }, { kind: 'git', command: 'git rev-parse --short HEAD' }, { kind: 'git', command: 'git status --porcelain=v1 -z --untracked-files=all' });
|
|
26
|
+
if (repoRootResult.exitCode !== 0) {
|
|
27
|
+
limits.push({
|
|
28
|
+
kind: 'unavailable',
|
|
29
|
+
subject: 'git repository root',
|
|
30
|
+
detail: normalizeError(repoRootResult.stderr) ?? 'Unable to resolve git repository root.',
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
if (branchResult.exitCode !== 0) {
|
|
34
|
+
limits.push({
|
|
35
|
+
kind: 'unavailable',
|
|
36
|
+
subject: 'git branch',
|
|
37
|
+
detail: normalizeError(branchResult.stderr) ?? 'Unable to resolve current git branch.',
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
if (commitResult.exitCode !== 0) {
|
|
41
|
+
limits.push({
|
|
42
|
+
kind: 'unavailable',
|
|
43
|
+
subject: 'git commit',
|
|
44
|
+
detail: normalizeError(commitResult.stderr) ?? 'Unable to resolve current git commit.',
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
if (statusResult.exitCode !== 0) {
|
|
48
|
+
limits.push({
|
|
49
|
+
kind: 'unavailable',
|
|
50
|
+
subject: 'git status',
|
|
51
|
+
detail: normalizeError(statusResult.stderr) ?? 'Unable to resolve git working tree status.',
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
const parsedStatus = statusResult.exitCode === 0 ? parsePorcelainStatus(statusResult.stdout) : [];
|
|
55
|
+
const groupedStatus = groupPaths(parsedStatus);
|
|
56
|
+
const boundedStatus = applyPathLimits(groupedStatus.paths);
|
|
57
|
+
const paths = boundedStatus.paths;
|
|
58
|
+
const hasVisibleChanges = paths.staged.length > 0 ||
|
|
59
|
+
paths.modified.length > 0 ||
|
|
60
|
+
paths.deleted.length > 0 ||
|
|
61
|
+
paths.untracked.length > 0 ||
|
|
62
|
+
paths.renamed.length > 0;
|
|
63
|
+
const hasOmittedChanges = groupedStatus.omittedCount > 0;
|
|
64
|
+
const isDirty = hasVisibleChanges || hasOmittedChanges;
|
|
65
|
+
if (groupedStatus.omittedCount > 0) {
|
|
66
|
+
limits.push({
|
|
67
|
+
kind: 'omitted',
|
|
68
|
+
subject: 'git working tree paths',
|
|
69
|
+
detail: `Omitted ${groupedStatus.omittedCount} runtime or dependency path entries such as .heddle, .git, node_modules, dist, coverage, and cache folders.`,
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
limits.push(...boundedStatus.limits);
|
|
73
|
+
return {
|
|
74
|
+
environment: {
|
|
75
|
+
gitRepositoryRoot: repoRootResult.exitCode === 0 ? repoRootResult.stdout.trim() || undefined : undefined,
|
|
76
|
+
gitBranch: branchResult.exitCode === 0 ? branchResult.stdout.trim() || undefined : undefined,
|
|
77
|
+
gitShortCommit: commitResult.exitCode === 0 ? commitResult.stdout.trim() || undefined : undefined,
|
|
78
|
+
isGitRepository: true,
|
|
79
|
+
isDirty,
|
|
80
|
+
paths,
|
|
81
|
+
},
|
|
82
|
+
sources,
|
|
83
|
+
limits,
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
function createNonGitEnvironment() {
|
|
87
|
+
return {
|
|
88
|
+
isGitRepository: false,
|
|
89
|
+
isDirty: false,
|
|
90
|
+
paths: {
|
|
91
|
+
staged: [],
|
|
92
|
+
modified: [],
|
|
93
|
+
deleted: [],
|
|
94
|
+
untracked: [],
|
|
95
|
+
renamed: [],
|
|
96
|
+
},
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
function groupPaths(entries) {
|
|
100
|
+
const staged = new Set();
|
|
101
|
+
const modified = new Set();
|
|
102
|
+
const deleted = new Set();
|
|
103
|
+
const untracked = new Set();
|
|
104
|
+
const renamed = new Map();
|
|
105
|
+
let omittedCount = 0;
|
|
106
|
+
for (const entry of entries) {
|
|
107
|
+
if (isNoisePath(entry.path) || (entry.oldPath && isNoisePath(entry.oldPath))) {
|
|
108
|
+
omittedCount += 1;
|
|
109
|
+
continue;
|
|
110
|
+
}
|
|
111
|
+
if (entry.indexStatus === '?' && entry.workingTreeStatus === '?') {
|
|
112
|
+
untracked.add(entry.path);
|
|
113
|
+
continue;
|
|
114
|
+
}
|
|
115
|
+
if (entry.indexStatus === 'R' && entry.oldPath) {
|
|
116
|
+
renamed.set(entry.oldPath, entry.path);
|
|
117
|
+
}
|
|
118
|
+
if (entry.indexStatus !== ' ' && entry.indexStatus !== '?' && entry.indexStatus !== 'D' && entry.indexStatus !== 'R') {
|
|
119
|
+
staged.add(entry.path);
|
|
120
|
+
}
|
|
121
|
+
if (entry.workingTreeStatus === 'M') {
|
|
122
|
+
modified.add(entry.path);
|
|
123
|
+
}
|
|
124
|
+
if (entry.indexStatus === 'D' || entry.workingTreeStatus === 'D') {
|
|
125
|
+
deleted.add(entry.path);
|
|
126
|
+
}
|
|
127
|
+
if (entry.indexStatus === 'M') {
|
|
128
|
+
staged.add(entry.path);
|
|
129
|
+
}
|
|
130
|
+
if (entry.indexStatus === 'A') {
|
|
131
|
+
staged.add(entry.path);
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
for (const deletedPath of deleted) {
|
|
135
|
+
staged.delete(deletedPath);
|
|
136
|
+
modified.delete(deletedPath);
|
|
137
|
+
}
|
|
138
|
+
return {
|
|
139
|
+
paths: {
|
|
140
|
+
staged: [...staged].sort(),
|
|
141
|
+
modified: [...modified].sort(),
|
|
142
|
+
deleted: [...deleted].sort(),
|
|
143
|
+
untracked: [...untracked].sort(),
|
|
144
|
+
renamed: [...renamed.entries()].sort(([left], [right]) => left.localeCompare(right)).map(([from, to]) => ({ from, to })),
|
|
145
|
+
},
|
|
146
|
+
omittedCount,
|
|
147
|
+
};
|
|
148
|
+
}
|
|
149
|
+
function isNoisePath(path) {
|
|
150
|
+
const segments = path.split('/').filter(Boolean);
|
|
151
|
+
return segments.some((segment) => OMITTED_PATH_SEGMENTS.has(segment));
|
|
152
|
+
}
|
|
153
|
+
export const OMITTED_PATH_SEGMENTS = new Set([
|
|
154
|
+
'.git',
|
|
155
|
+
'.heddle',
|
|
156
|
+
'node_modules',
|
|
157
|
+
'dist',
|
|
158
|
+
'coverage',
|
|
159
|
+
'build',
|
|
160
|
+
'.next',
|
|
161
|
+
'.turbo',
|
|
162
|
+
'.cache',
|
|
163
|
+
'test-results',
|
|
164
|
+
]);
|
|
165
|
+
const MAX_PATHS_PER_GROUP = 20;
|
|
166
|
+
function applyPathLimits(paths) {
|
|
167
|
+
const limits = [];
|
|
168
|
+
const staged = truncatePathGroup(paths.staged, 'staged paths', limits);
|
|
169
|
+
const modified = truncatePathGroup(paths.modified, 'modified paths', limits);
|
|
170
|
+
const deleted = truncatePathGroup(paths.deleted, 'deleted paths', limits);
|
|
171
|
+
const untracked = truncatePathGroup(paths.untracked, 'untracked paths', limits);
|
|
172
|
+
const renamed = truncateRenamedGroup(paths.renamed, limits);
|
|
173
|
+
return {
|
|
174
|
+
paths: {
|
|
175
|
+
staged,
|
|
176
|
+
modified,
|
|
177
|
+
deleted,
|
|
178
|
+
untracked,
|
|
179
|
+
renamed,
|
|
180
|
+
},
|
|
181
|
+
limits,
|
|
182
|
+
};
|
|
183
|
+
}
|
|
184
|
+
function truncatePathGroup(paths, subject, limits) {
|
|
185
|
+
if (paths.length <= MAX_PATHS_PER_GROUP) {
|
|
186
|
+
return paths;
|
|
187
|
+
}
|
|
188
|
+
const omittedCount = paths.length - MAX_PATHS_PER_GROUP;
|
|
189
|
+
limits.push({
|
|
190
|
+
kind: 'truncated',
|
|
191
|
+
subject,
|
|
192
|
+
detail: `Showing ${MAX_PATHS_PER_GROUP} of ${paths.length} entries; ${omittedCount} more omitted from the summary.`,
|
|
193
|
+
});
|
|
194
|
+
return paths.slice(0, MAX_PATHS_PER_GROUP);
|
|
195
|
+
}
|
|
196
|
+
function truncateRenamedGroup(paths, limits) {
|
|
197
|
+
if (paths.length <= MAX_PATHS_PER_GROUP) {
|
|
198
|
+
return paths;
|
|
199
|
+
}
|
|
200
|
+
const omittedCount = paths.length - MAX_PATHS_PER_GROUP;
|
|
201
|
+
limits.push({
|
|
202
|
+
kind: 'truncated',
|
|
203
|
+
subject: 'renamed paths',
|
|
204
|
+
detail: `Showing ${MAX_PATHS_PER_GROUP} of ${paths.length} entries; ${omittedCount} more omitted from the summary.`,
|
|
205
|
+
});
|
|
206
|
+
return paths.slice(0, MAX_PATHS_PER_GROUP);
|
|
207
|
+
}
|
|
208
|
+
function parsePorcelainStatus(stdout) {
|
|
209
|
+
const parts = stdout.split('\0').filter(Boolean);
|
|
210
|
+
const entries = [];
|
|
211
|
+
for (let index = 0; index < parts.length; index += 1) {
|
|
212
|
+
const raw = parts[index] ?? '';
|
|
213
|
+
if (raw.length < 4) {
|
|
214
|
+
continue;
|
|
215
|
+
}
|
|
216
|
+
const indexStatus = raw[0] ?? ' ';
|
|
217
|
+
const workingTreeStatus = raw[1] ?? ' ';
|
|
218
|
+
const path = raw.slice(3);
|
|
219
|
+
if (!path) {
|
|
220
|
+
continue;
|
|
221
|
+
}
|
|
222
|
+
if ((indexStatus === 'R' || indexStatus === 'C') && parts[index + 1]) {
|
|
223
|
+
entries.push({
|
|
224
|
+
path,
|
|
225
|
+
oldPath: parts[index + 1],
|
|
226
|
+
indexStatus,
|
|
227
|
+
workingTreeStatus,
|
|
228
|
+
});
|
|
229
|
+
index += 1;
|
|
230
|
+
continue;
|
|
231
|
+
}
|
|
232
|
+
entries.push({ path, oldPath: undefined, indexStatus, workingTreeStatus });
|
|
233
|
+
}
|
|
234
|
+
return entries;
|
|
235
|
+
}
|
|
236
|
+
function normalizeError(stderr) {
|
|
237
|
+
const trimmed = stderr.trim();
|
|
238
|
+
return trimmed || undefined;
|
|
239
|
+
}
|
|
240
|
+
function runGit(cwd, args) {
|
|
241
|
+
return new Promise((resolveResult) => {
|
|
242
|
+
execFile('git', args, {
|
|
243
|
+
cwd,
|
|
244
|
+
maxBuffer: 10 * 1024 * 1024,
|
|
245
|
+
}, (error, stdout, stderr) => {
|
|
246
|
+
const code = typeof error?.code === 'number'
|
|
247
|
+
? error.code
|
|
248
|
+
: error ? 1 : 0;
|
|
249
|
+
resolveResult({
|
|
250
|
+
exitCode: code,
|
|
251
|
+
stdout: stdout.toString(),
|
|
252
|
+
stderr: stderr.toString(),
|
|
253
|
+
});
|
|
254
|
+
});
|
|
255
|
+
});
|
|
256
|
+
}
|
|
257
|
+
//# sourceMappingURL=git.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"git.js","sourceRoot":"","sources":["../../../../../../../src/core/awareness/domains/coding/collectors/git.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAiB9C,MAAM,CAAC,KAAK,UAAU,4BAA4B,CAAC,aAAqB;IAKtE,MAAM,OAAO,GAAsB,EAAE,CAAC;IACtC,MAAM,MAAM,GAAqB,EAAE,CAAC;IAEpC,MAAM,cAAc,GAAG,MAAM,MAAM,CAAC,aAAa,EAAE,CAAC,WAAW,EAAE,uBAAuB,CAAC,CAAC,CAAC;IAC3F,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,qCAAqC,EAAE,CAAC,CAAC;IAC9E,IAAI,cAAc,CAAC,QAAQ,KAAK,CAAC,IAAI,cAAc,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,MAAM,EAAE,CAAC;QAC7E,MAAM,CAAC,IAAI,CAAC;YACV,IAAI,EAAE,gBAAgB;YACtB,OAAO,EAAE,KAAK;YACd,MAAM,EAAE,0CAA0C;SACnD,CAAC,CAAC;QACH,OAAO;YACL,WAAW,EAAE,uBAAuB,EAAE;YACtC,OAAO;YACP,MAAM;SACP,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,cAAc,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QACnF,MAAM,CAAC,aAAa,EAAE,CAAC,WAAW,EAAE,iBAAiB,CAAC,CAAC;QACvD,MAAM,CAAC,aAAa,EAAE,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAC;QACnD,MAAM,CAAC,aAAa,EAAE,CAAC,WAAW,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;QACvD,MAAM,CAAC,aAAa,EAAE,CAAC,QAAQ,EAAE,gBAAgB,EAAE,IAAI,EAAE,uBAAuB,CAAC,CAAC;KACnF,CAAC,CAAC;IAEH,OAAO,CAAC,IAAI,CACV,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,+BAA+B,EAAE,EACzD,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,2BAA2B,EAAE,EACrD,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,4BAA4B,EAAE,EACtD,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,oDAAoD,EAAE,CAC/E,CAAC;IAEF,IAAI,cAAc,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;QAClC,MAAM,CAAC,IAAI,CAAC;YACV,IAAI,EAAE,aAAa;YACnB,OAAO,EAAE,qBAAqB;YAC9B,MAAM,EAAE,cAAc,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,wCAAwC;SAC1F,CAAC,CAAC;IACL,CAAC;IACD,IAAI,YAAY,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;QAChC,MAAM,CAAC,IAAI,CAAC;YACV,IAAI,EAAE,aAAa;YACnB,OAAO,EAAE,YAAY;YACrB,MAAM,EAAE,cAAc,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,uCAAuC;SACvF,CAAC,CAAC;IACL,CAAC;IACD,IAAI,YAAY,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;QAChC,MAAM,CAAC,IAAI,CAAC;YACV,IAAI,EAAE,aAAa;YACnB,OAAO,EAAE,YAAY;YACrB,MAAM,EAAE,cAAc,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,uCAAuC;SACvF,CAAC,CAAC;IACL,CAAC;IACD,IAAI,YAAY,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;QAChC,MAAM,CAAC,IAAI,CAAC;YACV,IAAI,EAAE,aAAa;YACnB,OAAO,EAAE,YAAY;YACrB,MAAM,EAAE,cAAc,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,4CAA4C;SAC5F,CAAC,CAAC;IACL,CAAC;IAED,MAAM,YAAY,GAAG,YAAY,CAAC,QAAQ,KAAK,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAClG,MAAM,aAAa,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC;IAC/C,MAAM,aAAa,GAAG,eAAe,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IAC3D,MAAM,KAAK,GAAG,aAAa,CAAC,KAAK,CAAC;IAClC,MAAM,iBAAiB,GACrB,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC;QACvB,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC;QACzB,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC;QACxB,KAAK,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC;QAC1B,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;IAC3B,MAAM,iBAAiB,GAAG,aAAa,CAAC,YAAY,GAAG,CAAC,CAAC;IACzD,MAAM,OAAO,GAAG,iBAAiB,IAAI,iBAAiB,CAAC;IAEvD,IAAI,aAAa,CAAC,YAAY,GAAG,CAAC,EAAE,CAAC;QACnC,MAAM,CAAC,IAAI,CAAC;YACV,IAAI,EAAE,SAAS;YACf,OAAO,EAAE,wBAAwB;YACjC,MAAM,EAAE,WAAW,aAAa,CAAC,YAAY,6GAA6G;SAC3J,CAAC,CAAC;IACL,CAAC;IACD,MAAM,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;IAErC,OAAO;QACL,WAAW,EAAE;YACX,iBAAiB,EAAE,cAAc,CAAC,QAAQ,KAAK,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,SAAS,CAAC,CAAC,CAAC,SAAS;YACxG,SAAS,EAAE,YAAY,CAAC,QAAQ,KAAK,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,SAAS,CAAC,CAAC,CAAC,SAAS;YAC5F,cAAc,EAAE,YAAY,CAAC,QAAQ,KAAK,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,SAAS,CAAC,CAAC,CAAC,SAAS;YACjG,eAAe,EAAE,IAAI;YACrB,OAAO;YACP,KAAK;SACN;QACD,OAAO;QACP,MAAM;KACP,CAAC;AACJ,CAAC;AAED,SAAS,uBAAuB;IAC9B,OAAO;QACL,eAAe,EAAE,KAAK;QACtB,OAAO,EAAE,KAAK;QACd,KAAK,EAAE;YACL,MAAM,EAAE,EAAE;YACV,QAAQ,EAAE,EAAE;YACZ,OAAO,EAAE,EAAE;YACX,SAAS,EAAE,EAAE;YACb,OAAO,EAAE,EAAE;SACZ;KACF,CAAC;AACJ,CAAC;AAED,SAAS,UAAU,CAAC,OAAyB;IAI3C,MAAM,MAAM,GAAG,IAAI,GAAG,EAAU,CAAC;IACjC,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAU,CAAC;IACnC,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAClC,MAAM,SAAS,GAAG,IAAI,GAAG,EAAU,CAAC;IACpC,MAAM,OAAO,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC1C,IAAI,YAAY,GAAG,CAAC,CAAC;IAErB,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,IAAI,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC;YAC7E,YAAY,IAAI,CAAC,CAAC;YAClB,SAAS;QACX,CAAC;QAED,IAAI,KAAK,CAAC,WAAW,KAAK,GAAG,IAAI,KAAK,CAAC,iBAAiB,KAAK,GAAG,EAAE,CAAC;YACjE,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC1B,SAAS;QACX,CAAC;QAED,IAAI,KAAK,CAAC,WAAW,KAAK,GAAG,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;YAC/C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QACzC,CAAC;QAED,IAAI,KAAK,CAAC,WAAW,KAAK,GAAG,IAAI,KAAK,CAAC,WAAW,KAAK,GAAG,IAAI,KAAK,CAAC,WAAW,KAAK,GAAG,IAAI,KAAK,CAAC,WAAW,KAAK,GAAG,EAAE,CAAC;YACrH,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACzB,CAAC;QACD,IAAI,KAAK,CAAC,iBAAiB,KAAK,GAAG,EAAE,CAAC;YACpC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC3B,CAAC;QACD,IAAI,KAAK,CAAC,WAAW,KAAK,GAAG,IAAI,KAAK,CAAC,iBAAiB,KAAK,GAAG,EAAE,CAAC;YACjE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC1B,CAAC;QACD,IAAI,KAAK,CAAC,WAAW,KAAK,GAAG,EAAE,CAAC;YAC9B,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACzB,CAAC;QACD,IAAI,KAAK,CAAC,WAAW,KAAK,GAAG,EAAE,CAAC;YAC9B,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACzB,CAAC;IACH,CAAC;IAED,KAAK,MAAM,WAAW,IAAI,OAAO,EAAE,CAAC;QAClC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QAC3B,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IAC/B,CAAC;IAED,OAAO;QACL,KAAK,EAAE;YACL,MAAM,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,IAAI,EAAE;YAC1B,QAAQ,EAAE,CAAC,GAAG,QAAQ,CAAC,CAAC,IAAI,EAAE;YAC9B,OAAO,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,IAAI,EAAE;YAC5B,SAAS,EAAE,CAAC,GAAG,SAAS,CAAC,CAAC,IAAI,EAAE;YAChC,OAAO,EAAE,CAAC,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;SACzH;QACD,YAAY;KACb,CAAC;AACJ,CAAC;AAED,SAAS,WAAW,CAAC,IAAY;IAC/B,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACjD,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,qBAAqB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;AACxE,CAAC;AAED,MAAM,CAAC,MAAM,qBAAqB,GAAG,IAAI,GAAG,CAAC;IAC3C,MAAM;IACN,SAAS;IACT,cAAc;IACd,MAAM;IACN,UAAU;IACV,OAAO;IACP,OAAO;IACP,QAAQ;IACR,QAAQ;IACR,cAAc;CACf,CAAC,CAAC;AAEH,MAAM,mBAAmB,GAAG,EAAE,CAAC;AAE/B,SAAS,eAAe,CAAC,KAAwC;IAI/D,MAAM,MAAM,GAAqB,EAAE,CAAC;IAEpC,MAAM,MAAM,GAAG,iBAAiB,CAAC,KAAK,CAAC,MAAM,EAAE,cAAc,EAAE,MAAM,CAAC,CAAC;IACvE,MAAM,QAAQ,GAAG,iBAAiB,CAAC,KAAK,CAAC,QAAQ,EAAE,gBAAgB,EAAE,MAAM,CAAC,CAAC;IAC7E,MAAM,OAAO,GAAG,iBAAiB,CAAC,KAAK,CAAC,OAAO,EAAE,eAAe,EAAE,MAAM,CAAC,CAAC;IAC1E,MAAM,SAAS,GAAG,iBAAiB,CAAC,KAAK,CAAC,SAAS,EAAE,iBAAiB,EAAE,MAAM,CAAC,CAAC;IAChF,MAAM,OAAO,GAAG,oBAAoB,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAE5D,OAAO;QACL,KAAK,EAAE;YACL,MAAM;YACN,QAAQ;YACR,OAAO;YACP,SAAS;YACT,OAAO;SACR;QACD,MAAM;KACP,CAAC;AACJ,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAe,EAAE,OAAe,EAAE,MAAwB;IACnF,IAAI,KAAK,CAAC,MAAM,IAAI,mBAAmB,EAAE,CAAC;QACxC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,YAAY,GAAG,KAAK,CAAC,MAAM,GAAG,mBAAmB,CAAC;IACxD,MAAM,CAAC,IAAI,CAAC;QACV,IAAI,EAAE,WAAW;QACjB,OAAO;QACP,MAAM,EAAE,WAAW,mBAAmB,OAAO,KAAK,CAAC,MAAM,aAAa,YAAY,iCAAiC;KACpH,CAAC,CAAC;IACH,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,mBAAmB,CAAC,CAAC;AAC7C,CAAC;AAED,SAAS,oBAAoB,CAC3B,KAA0C,EAC1C,MAAwB;IAExB,IAAI,KAAK,CAAC,MAAM,IAAI,mBAAmB,EAAE,CAAC;QACxC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,YAAY,GAAG,KAAK,CAAC,MAAM,GAAG,mBAAmB,CAAC;IACxD,MAAM,CAAC,IAAI,CAAC;QACV,IAAI,EAAE,WAAW;QACjB,OAAO,EAAE,eAAe;QACxB,MAAM,EAAE,WAAW,mBAAmB,OAAO,KAAK,CAAC,MAAM,aAAa,YAAY,iCAAiC;KACpH,CAAC,CAAC;IACH,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,mBAAmB,CAAC,CAAC;AAC7C,CAAC;AAED,SAAS,oBAAoB,CAAC,MAAc;IAC1C,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACjD,MAAM,OAAO,GAAqB,EAAE,CAAC;IAErC,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QACrD,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QAC/B,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACnB,SAAS;QACX,CAAC;QAED,MAAM,WAAW,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC;QAClC,MAAM,iBAAiB,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC;QACxC,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC1B,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,SAAS;QACX,CAAC;QAED,IAAI,CAAC,WAAW,KAAK,GAAG,IAAI,WAAW,KAAK,GAAG,CAAC,IAAI,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC;YACrE,OAAO,CAAC,IAAI,CAAC;gBACX,IAAI;gBACJ,OAAO,EAAE,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC;gBACzB,WAAW;gBACX,iBAAiB;aAClB,CAAC,CAAC;YACH,KAAK,IAAI,CAAC,CAAC;YACX,SAAS;QACX,CAAC;QAED,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,iBAAiB,EAAE,CAAC,CAAC;IAC7E,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,cAAc,CAAC,MAAc;IACpC,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;IAC9B,OAAO,OAAO,IAAI,SAAS,CAAC;AAC9B,CAAC;AAED,SAAS,MAAM,CAAC,GAAW,EAAE,IAAc;IACzC,OAAO,IAAI,OAAO,CAAC,CAAC,aAAa,EAAE,EAAE;QACnC,QAAQ,CAAC,KAAK,EAAE,IAAI,EAAE;YACpB,GAAG;YACH,SAAS,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI;SAC5B,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE;YAC3B,MAAM,IAAI,GAAG,OAAQ,KAAmC,EAAE,IAAI,KAAK,QAAQ;gBACzE,CAAC,CAAE,KAA0B,CAAC,IAAI;gBAClC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAClB,aAAa,CAAC;gBACZ,QAAQ,EAAE,IAAI;gBACd,MAAM,EAAE,MAAM,CAAC,QAAQ,EAAE;gBACzB,MAAM,EAAE,MAAM,CAAC,QAAQ,EAAE;aAC1B,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { AwarenessLimit, AwarenessSource } from '../../../types.js';
|
|
2
|
+
import type { CodingWorkspaceTree } from '../types.js';
|
|
3
|
+
export declare function collectCodingWorkspaceTree(input: {
|
|
4
|
+
workspaceRoot: string;
|
|
5
|
+
maxDepth?: number;
|
|
6
|
+
maxEntries?: number;
|
|
7
|
+
}): Promise<{
|
|
8
|
+
tree: CodingWorkspaceTree;
|
|
9
|
+
sources: AwarenessSource[];
|
|
10
|
+
limits: AwarenessLimit[];
|
|
11
|
+
}>;
|
|
12
|
+
//# sourceMappingURL=workspace-tree.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workspace-tree.d.ts","sourceRoot":"","sources":["../../../../../../../src/core/awareness/domains/coding/collectors/workspace-tree.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACzE,OAAO,KAAK,EAAE,mBAAmB,EAA4B,MAAM,aAAa,CAAC;AAMjF,wBAAsB,0BAA0B,CAAC,KAAK,EAAE;IACtD,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,GAAG,OAAO,CAAC;IACV,IAAI,EAAE,mBAAmB,CAAC;IAC1B,OAAO,EAAE,eAAe,EAAE,CAAC;IAC3B,MAAM,EAAE,cAAc,EAAE,CAAC;CAC1B,CAAC,CA4DD"}
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
import { readdir } from 'node:fs/promises';
|
|
2
|
+
import { join } from 'node:path';
|
|
3
|
+
import { OMITTED_PATH_SEGMENTS } from './git.js';
|
|
4
|
+
const DEFAULT_MAX_DEPTH = 2;
|
|
5
|
+
const DEFAULT_MAX_ENTRIES = 60;
|
|
6
|
+
export async function collectCodingWorkspaceTree(input) {
|
|
7
|
+
const maxDepth = input.maxDepth ?? DEFAULT_MAX_DEPTH;
|
|
8
|
+
const maxEntries = input.maxEntries ?? DEFAULT_MAX_ENTRIES;
|
|
9
|
+
const sources = [{
|
|
10
|
+
kind: 'filesystem',
|
|
11
|
+
path: input.workspaceRoot,
|
|
12
|
+
note: 'workspace tree',
|
|
13
|
+
}];
|
|
14
|
+
const limits = [];
|
|
15
|
+
const state = {
|
|
16
|
+
visitedEntries: 0,
|
|
17
|
+
omittedNoise: 0,
|
|
18
|
+
omittedByDepth: 0,
|
|
19
|
+
truncatedByEntryBudget: false,
|
|
20
|
+
};
|
|
21
|
+
const entries = await readTree({
|
|
22
|
+
absoluteRoot: input.workspaceRoot,
|
|
23
|
+
relativeRoot: '',
|
|
24
|
+
depth: 1,
|
|
25
|
+
maxDepth,
|
|
26
|
+
maxEntries,
|
|
27
|
+
state,
|
|
28
|
+
});
|
|
29
|
+
if (state.omittedNoise > 0) {
|
|
30
|
+
limits.push({
|
|
31
|
+
kind: 'omitted',
|
|
32
|
+
subject: 'workspace tree',
|
|
33
|
+
detail: `Omitted ${state.omittedNoise} runtime or dependency entries such as .git, .heddle, node_modules, dist, coverage, build, and cache folders.`,
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
if (state.omittedByDepth > 0) {
|
|
37
|
+
limits.push({
|
|
38
|
+
kind: 'truncated',
|
|
39
|
+
subject: 'workspace tree depth',
|
|
40
|
+
detail: `Stopped descending into ${state.omittedByDepth} director${state.omittedByDepth === 1 ? 'y' : 'ies'} at depth ${maxDepth}.`,
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
if (state.truncatedByEntryBudget) {
|
|
44
|
+
limits.push({
|
|
45
|
+
kind: 'truncated',
|
|
46
|
+
subject: 'workspace tree entries',
|
|
47
|
+
detail: `Showing at most ${maxEntries} entries across the tree; additional entries were omitted.`,
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
return {
|
|
51
|
+
tree: {
|
|
52
|
+
root: input.workspaceRoot,
|
|
53
|
+
maxDepth,
|
|
54
|
+
maxEntries,
|
|
55
|
+
entries,
|
|
56
|
+
},
|
|
57
|
+
sources,
|
|
58
|
+
limits,
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
async function readTree(args) {
|
|
62
|
+
let dirents;
|
|
63
|
+
try {
|
|
64
|
+
dirents = await readdir(args.absoluteRoot, { withFileTypes: true });
|
|
65
|
+
}
|
|
66
|
+
catch {
|
|
67
|
+
return [];
|
|
68
|
+
}
|
|
69
|
+
const visibleDirents = dirents
|
|
70
|
+
.filter((dirent) => {
|
|
71
|
+
if (OMITTED_PATH_SEGMENTS.has(dirent.name)) {
|
|
72
|
+
args.state.omittedNoise += 1;
|
|
73
|
+
return false;
|
|
74
|
+
}
|
|
75
|
+
return true;
|
|
76
|
+
})
|
|
77
|
+
.sort((left, right) => {
|
|
78
|
+
if (left.isDirectory() !== right.isDirectory()) {
|
|
79
|
+
return left.isDirectory() ? -1 : 1;
|
|
80
|
+
}
|
|
81
|
+
return left.name.localeCompare(right.name);
|
|
82
|
+
});
|
|
83
|
+
const entries = [];
|
|
84
|
+
for (const dirent of visibleDirents) {
|
|
85
|
+
if (args.state.visitedEntries >= args.maxEntries) {
|
|
86
|
+
args.state.truncatedByEntryBudget = true;
|
|
87
|
+
break;
|
|
88
|
+
}
|
|
89
|
+
const path = args.relativeRoot ? `${args.relativeRoot}/${dirent.name}` : dirent.name;
|
|
90
|
+
args.state.visitedEntries += 1;
|
|
91
|
+
if (dirent.isDirectory()) {
|
|
92
|
+
const node = {
|
|
93
|
+
path,
|
|
94
|
+
kind: 'directory',
|
|
95
|
+
};
|
|
96
|
+
if (args.depth >= args.maxDepth) {
|
|
97
|
+
node.truncated = true;
|
|
98
|
+
args.state.omittedByDepth += 1;
|
|
99
|
+
}
|
|
100
|
+
else if (!args.state.truncatedByEntryBudget) {
|
|
101
|
+
const children = await readTree({
|
|
102
|
+
absoluteRoot: join(args.absoluteRoot, dirent.name),
|
|
103
|
+
relativeRoot: path,
|
|
104
|
+
depth: args.depth + 1,
|
|
105
|
+
maxDepth: args.maxDepth,
|
|
106
|
+
maxEntries: args.maxEntries,
|
|
107
|
+
state: args.state,
|
|
108
|
+
});
|
|
109
|
+
if (children.length > 0) {
|
|
110
|
+
node.children = children;
|
|
111
|
+
}
|
|
112
|
+
if (args.state.truncatedByEntryBudget) {
|
|
113
|
+
node.truncated = true;
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
entries.push(node);
|
|
117
|
+
continue;
|
|
118
|
+
}
|
|
119
|
+
entries.push({
|
|
120
|
+
path,
|
|
121
|
+
kind: 'file',
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
return entries;
|
|
125
|
+
}
|
|
126
|
+
//# sourceMappingURL=workspace-tree.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workspace-tree.js","sourceRoot":"","sources":["../../../../../../../src/core/awareness/domains/coding/collectors/workspace-tree.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { AwarenessCollectInput, AwarenessLimit, AwarenessSource } from '../../../types.js';
|
|
2
|
+
import type { CodingWorkingEnvironment, CodingWorkspaceTree } from '../types.js';
|
|
3
|
+
export declare function collectCodingWorkingEnvironment(input: AwarenessCollectInput): Promise<{
|
|
4
|
+
environment: CodingWorkingEnvironment;
|
|
5
|
+
sources: AwarenessSource[];
|
|
6
|
+
limits: AwarenessLimit[];
|
|
7
|
+
}>;
|
|
8
|
+
export declare function collectCodingProjectDashboard(input: AwarenessCollectInput): Promise<{
|
|
9
|
+
environment: CodingWorkingEnvironment;
|
|
10
|
+
workspaceTree: CodingWorkspaceTree;
|
|
11
|
+
sources: AwarenessSource[];
|
|
12
|
+
limits: AwarenessLimit[];
|
|
13
|
+
}>;
|
|
14
|
+
//# sourceMappingURL=workspace.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workspace.d.ts","sourceRoot":"","sources":["../../../../../../../src/core/awareness/domains/coding/collectors/workspace.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAChG,OAAO,KAAK,EAAE,wBAAwB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAIjF,wBAAsB,+BAA+B,CAAC,KAAK,EAAE,qBAAqB,GAAG,OAAO,CAAC;IAC3F,WAAW,EAAE,wBAAwB,CAAC;IACtC,OAAO,EAAE,eAAe,EAAE,CAAC;IAC3B,MAAM,EAAE,cAAc,EAAE,CAAC;CAC1B,CAAC,CAyBD;AAED,wBAAsB,6BAA6B,CAAC,KAAK,EAAE,qBAAqB,GAAG,OAAO,CAAC;IACzF,WAAW,EAAE,wBAAwB,CAAC;IACtC,aAAa,EAAE,mBAAmB,CAAC;IACnC,OAAO,EAAE,eAAe,EAAE,CAAC;IAC3B,MAAM,EAAE,cAAc,EAAE,CAAC;CAC1B,CAAC,CAgBD"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { collectGitWorkingEnvironment } from './git.js';
|
|
2
|
+
import { collectCodingWorkspaceTree } from './workspace-tree.js';
|
|
3
|
+
export async function collectCodingWorkingEnvironment(input) {
|
|
4
|
+
const sources = [{
|
|
5
|
+
kind: 'filesystem',
|
|
6
|
+
path: input.workspaceRoot,
|
|
7
|
+
note: 'workspace root',
|
|
8
|
+
}];
|
|
9
|
+
const limits = [];
|
|
10
|
+
const gitResult = await collectGitWorkingEnvironment(input.workspaceRoot);
|
|
11
|
+
sources.push(...gitResult.sources);
|
|
12
|
+
limits.push(...gitResult.limits);
|
|
13
|
+
return {
|
|
14
|
+
environment: {
|
|
15
|
+
workspaceRoot: input.workspaceRoot,
|
|
16
|
+
gitRepositoryRoot: gitResult.environment.gitRepositoryRoot,
|
|
17
|
+
gitBranch: gitResult.environment.gitBranch,
|
|
18
|
+
gitShortCommit: gitResult.environment.gitShortCommit,
|
|
19
|
+
isGitRepository: gitResult.environment.isGitRepository,
|
|
20
|
+
isDirty: gitResult.environment.isDirty,
|
|
21
|
+
paths: gitResult.environment.paths,
|
|
22
|
+
},
|
|
23
|
+
sources,
|
|
24
|
+
limits,
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
export async function collectCodingProjectDashboard(input) {
|
|
28
|
+
const [environmentResult, treeResult] = await Promise.all([
|
|
29
|
+
collectCodingWorkingEnvironment(input),
|
|
30
|
+
collectCodingWorkspaceTree({
|
|
31
|
+
workspaceRoot: input.workspaceRoot,
|
|
32
|
+
maxDepth: input.maxDepth,
|
|
33
|
+
maxEntries: input.maxEntries,
|
|
34
|
+
}),
|
|
35
|
+
]);
|
|
36
|
+
return {
|
|
37
|
+
environment: environmentResult.environment,
|
|
38
|
+
workspaceTree: treeResult.tree,
|
|
39
|
+
sources: mergeSources(environmentResult.sources, treeResult.sources),
|
|
40
|
+
limits: [...environmentResult.limits, ...treeResult.limits],
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
function mergeSources(left, right) {
|
|
44
|
+
const seen = new Set();
|
|
45
|
+
const merged = [];
|
|
46
|
+
for (const source of [...left, ...right]) {
|
|
47
|
+
const key = `${source.kind}|${source.command ?? ''}|${source.path ?? ''}|${source.note ?? ''}`;
|
|
48
|
+
if (seen.has(key)) {
|
|
49
|
+
continue;
|
|
50
|
+
}
|
|
51
|
+
seen.add(key);
|
|
52
|
+
merged.push(source);
|
|
53
|
+
}
|
|
54
|
+
return merged;
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=workspace.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workspace.js","sourceRoot":"","sources":["../../../../../../../src/core/awareness/domains/coding/collectors/workspace.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,4BAA4B,EAAE,MAAM,UAAU,CAAC;AACxD,OAAO,EAAE,0BAA0B,EAAE,MAAM,qBAAqB,CAAC;AAEjE,MAAM,CAAC,KAAK,UAAU,+BAA+B,CAAC,KAA4B;IAKhF,MAAM,OAAO,GAAsB,CAAC;YAClC,IAAI,EAAE,YAAY;YAClB,IAAI,EAAE,KAAK,CAAC,aAAa;YACzB,IAAI,EAAE,gBAAgB;SACvB,CAAC,CAAC;IACH,MAAM,MAAM,GAAqB,EAAE,CAAC;IAEpC,MAAM,SAAS,GAAG,MAAM,4BAA4B,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;IAC1E,OAAO,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;IACnC,MAAM,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;IAEjC,OAAO;QACL,WAAW,EAAE;YACX,aAAa,EAAE,KAAK,CAAC,aAAa;YAClC,iBAAiB,EAAE,SAAS,CAAC,WAAW,CAAC,iBAAiB;YAC1D,SAAS,EAAE,SAAS,CAAC,WAAW,CAAC,SAAS;YAC1C,cAAc,EAAE,SAAS,CAAC,WAAW,CAAC,cAAc;YACpD,eAAe,EAAE,SAAS,CAAC,WAAW,CAAC,eAAe;YACtD,OAAO,EAAE,SAAS,CAAC,WAAW,CAAC,OAAO;YACtC,KAAK,EAAE,SAAS,CAAC,WAAW,CAAC,KAAK;SACnC;QACD,OAAO;QACP,MAAM;KACP,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,6BAA6B,CAAC,KAA4B;IAM9E,MAAM,CAAC,iBAAiB,EAAE,UAAU,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QACxD,+BAA+B,CAAC,KAAK,CAAC;QACtC,0BAA0B,CAAC;YACzB,aAAa,EAAE,KAAK,CAAC,aAAa;YAClC,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,UAAU,EAAE,KAAK,CAAC,UAAU;SAC7B,CAAC;KACH,CAAC,CAAC;IAEH,OAAO;QACL,WAAW,EAAE,iBAAiB,CAAC,WAAW;QAC1C,aAAa,EAAE,UAAU,CAAC,IAAI;QAC9B,OAAO,EAAE,YAAY,CAAC,iBAAiB,CAAC,OAAO,EAAE,UAAU,CAAC,OAAO,CAAC;QACpE,MAAM,EAAE,CAAC,GAAG,iBAAiB,CAAC,MAAM,EAAE,GAAG,UAAU,CAAC,MAAM,CAAC;KAC5D,CAAC;AACJ,CAAC;AAED,SAAS,YAAY,CACnB,IAAuB,EACvB,KAAwB;IAExB,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,MAAM,MAAM,GAAsB,EAAE,CAAC;IAErC,KAAK,MAAM,MAAM,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,KAAK,CAAC,EAAE,CAAC;QACzC,MAAM,GAAG,GAAG,GAAG,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,OAAO,IAAI,EAAE,IAAI,MAAM,CAAC,IAAI,IAAI,EAAE,IAAI,MAAM,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC;QAC/F,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YAClB,SAAS;QACX,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACd,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACtB,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"format.d.ts","sourceRoot":"","sources":["../../../../../../src/core/awareness/domains/coding/format.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,4BAA4B,EAAE,MAAM,YAAY,CAAC;AAExF,wBAAgB,oCAAoC,CAAC,QAAQ,EAAE,uBAAuB,GAAG,4BAA4B,CAsBpH"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export function formatCodingProjectDashboardSnapshot(snapshot) {
|
|
2
|
+
const sections = {};
|
|
3
|
+
for (const section of snapshot.sections) {
|
|
4
|
+
if (section.type === 'working_environment') {
|
|
5
|
+
sections.working_environment = section.data;
|
|
6
|
+
}
|
|
7
|
+
if (section.type === 'workspace_tree') {
|
|
8
|
+
sections.workspace_tree = section.data;
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
return {
|
|
12
|
+
schemaVersion: 1,
|
|
13
|
+
domain: 'coding',
|
|
14
|
+
profile: 'project_dashboard',
|
|
15
|
+
collectedAt: snapshot.collectedAt,
|
|
16
|
+
workspaceRoot: snapshot.workspaceRoot,
|
|
17
|
+
sections,
|
|
18
|
+
sources: snapshot.sources,
|
|
19
|
+
limits: snapshot.limits,
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=format.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"format.js","sourceRoot":"","sources":["../../../../../../src/core/awareness/domains/coding/format.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,oCAAoC,CAAC,QAAiC;IACpF,MAAM,QAAQ,GAA6C,EAAE,CAAC;IAE9D,KAAK,MAAM,OAAO,IAAI,QAAQ,CAAC,QAAQ,EAAE,CAAC;QACxC,IAAI,OAAO,CAAC,IAAI,KAAK,qBAAqB,EAAE,CAAC;YAC3C,QAAQ,CAAC,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;QAC9C,CAAC;QACD,IAAI,OAAO,CAAC,IAAI,KAAK,gBAAgB,EAAE,CAAC;YACtC,QAAQ,CAAC,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;QACzC,CAAC;IACH,CAAC;IAED,OAAO;QACL,aAAa,EAAE,CAAC;QAChB,MAAM,EAAE,QAAQ;QAChB,OAAO,EAAE,mBAAmB;QAC5B,WAAW,EAAE,QAAQ,CAAC,WAAW;QACjC,aAAa,EAAE,QAAQ,CAAC,aAAa;QACrC,QAAQ;QACR,OAAO,EAAE,QAAQ,CAAC,OAAO;QACzB,MAAM,EAAE,QAAQ,CAAC,MAAM;KACxB,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { AwarenessProvider } from '../../types.js';
|
|
2
|
+
import type { CodingAwarenessSnapshot } from './types.js';
|
|
3
|
+
export type CodingAwarenessProviderOptions = {
|
|
4
|
+
now?: () => Date;
|
|
5
|
+
nextId?: () => string;
|
|
6
|
+
};
|
|
7
|
+
export declare function createCodingAwarenessProvider(options?: CodingAwarenessProviderOptions): AwarenessProvider<CodingAwarenessSnapshot['sections'][number]>;
|
|
8
|
+
//# sourceMappingURL=provider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../../../../../src/core/awareness/domains/coding/provider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAyB,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAC/E,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAG1D,MAAM,MAAM,8BAA8B,GAAG;IAC3C,GAAG,CAAC,EAAE,MAAM,IAAI,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,MAAM,CAAC;CACvB,CAAC;AAEF,wBAAgB,6BAA6B,CAC3C,OAAO,GAAE,8BAAmC,GAC3C,iBAAiB,CAAC,uBAAuB,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC,CAuChE"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { collectCodingProjectDashboard } from './collectors/workspace.js';
|
|
2
|
+
export function createCodingAwarenessProvider(options = {}) {
|
|
3
|
+
return {
|
|
4
|
+
domain: 'coding',
|
|
5
|
+
async collect(input) {
|
|
6
|
+
if (input.profile !== 'project_dashboard') {
|
|
7
|
+
throw new Error(`Unsupported coding awareness profile: ${input.profile}`);
|
|
8
|
+
}
|
|
9
|
+
const collectedAt = (options.now ?? (() => new Date()))().toISOString();
|
|
10
|
+
const id = (options.nextId ?? defaultNextId)();
|
|
11
|
+
const collected = await collectCodingProjectDashboard(input);
|
|
12
|
+
const requestedSections = new Set(input.requestedSections ?? ['working_environment', 'workspace_tree']);
|
|
13
|
+
const sections = [];
|
|
14
|
+
if (requestedSections.has('working_environment')) {
|
|
15
|
+
sections.push({
|
|
16
|
+
type: 'working_environment',
|
|
17
|
+
data: collected.environment,
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
if (requestedSections.has('workspace_tree')) {
|
|
21
|
+
sections.push({
|
|
22
|
+
type: 'workspace_tree',
|
|
23
|
+
data: collected.workspaceTree,
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
return {
|
|
27
|
+
id,
|
|
28
|
+
domain: 'coding',
|
|
29
|
+
profile: 'project_dashboard',
|
|
30
|
+
collectedAt,
|
|
31
|
+
workspaceRoot: input.workspaceRoot,
|
|
32
|
+
sections,
|
|
33
|
+
sources: collected.sources,
|
|
34
|
+
limits: collected.limits,
|
|
35
|
+
};
|
|
36
|
+
},
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
function defaultNextId() {
|
|
40
|
+
return `awareness-${Math.random().toString(36).slice(2, 10)}`;
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=provider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provider.js","sourceRoot":"","sources":["../../../../../../src/core/awareness/domains/coding/provider.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,6BAA6B,EAAE,MAAM,2BAA2B,CAAC;AAO1E,MAAM,UAAU,6BAA6B,CAC3C,UAA0C,EAAE;IAE5C,OAAO;QACL,MAAM,EAAE,QAAQ;QAChB,KAAK,CAAC,OAAO,CAAC,KAA4B;YACxC,IAAI,KAAK,CAAC,OAAO,KAAK,mBAAmB,EAAE,CAAC;gBAC1C,MAAM,IAAI,KAAK,CAAC,yCAAyC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YAC5E,CAAC;YAED,MAAM,WAAW,GAAG,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC;YACxE,MAAM,EAAE,GAAG,CAAC,OAAO,CAAC,MAAM,IAAI,aAAa,CAAC,EAAE,CAAC;YAC/C,MAAM,SAAS,GAAG,MAAM,6BAA6B,CAAC,KAAK,CAAC,CAAC;YAC7D,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,iBAAiB,IAAI,CAAC,qBAAqB,EAAE,gBAAgB,CAAC,CAAC,CAAC;YACxG,MAAM,QAAQ,GAAwC,EAAE,CAAC;YAEzD,IAAI,iBAAiB,CAAC,GAAG,CAAC,qBAAqB,CAAC,EAAE,CAAC;gBACjD,QAAQ,CAAC,IAAI,CAAC;oBACZ,IAAI,EAAE,qBAAqB;oBAC3B,IAAI,EAAE,SAAS,CAAC,WAAW;iBAC5B,CAAC,CAAC;YACL,CAAC;YACD,IAAI,iBAAiB,CAAC,GAAG,CAAC,gBAAgB,CAAC,EAAE,CAAC;gBAC5C,QAAQ,CAAC,IAAI,CAAC;oBACZ,IAAI,EAAE,gBAAgB;oBACtB,IAAI,EAAE,SAAS,CAAC,aAAa;iBAC9B,CAAC,CAAC;YACL,CAAC;YAED,OAAO;gBACL,EAAE;gBACF,MAAM,EAAE,QAAQ;gBAChB,OAAO,EAAE,mBAAmB;gBAC5B,WAAW;gBACX,aAAa,EAAE,KAAK,CAAC,aAAa;gBAClC,QAAQ;gBACR,OAAO,EAAE,SAAS,CAAC,OAAO;gBAC1B,MAAM,EAAE,SAAS,CAAC,MAAM;aACzB,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC;AAED,SAAS,aAAa;IACpB,OAAO,aAAa,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;AAChE,CAAC"}
|