@agentteams/cli 0.1.91 → 0.1.93
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/.eslintcache +1 -1
- package/README.md +36 -0
- package/dist/api/codeReview.d.ts.map +1 -1
- package/dist/api/codeReview.js +4 -2
- package/dist/api/codeReview.js.map +1 -1
- package/dist/api/convention.d.ts.map +1 -1
- package/dist/api/convention.js +3 -1
- package/dist/api/convention.js.map +1 -1
- package/dist/api/linear.d.ts.map +1 -1
- package/dist/api/linear.js +3 -1
- package/dist/api/linear.js.map +1 -1
- package/dist/api/task.js +1 -1
- package/dist/api/task.js.map +1 -1
- package/dist/commands/convention.d.ts +3 -0
- package/dist/commands/convention.d.ts.map +1 -1
- package/dist/commands/convention.js +35 -5
- package/dist/commands/convention.js.map +1 -1
- package/dist/commands/doctor.d.ts +5 -0
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +93 -45
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/document.d.ts +11 -0
- package/dist/commands/document.d.ts.map +1 -1
- package/dist/commands/document.js +37 -12
- package/dist/commands/document.js.map +1 -1
- package/dist/commands/index.d.ts.map +1 -1
- package/dist/commands/index.js +19 -0
- package/dist/commands/index.js.map +1 -1
- package/dist/commands/init.d.ts +110 -27
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +659 -462
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/initWorktree.d.ts +32 -0
- package/dist/commands/initWorktree.d.ts.map +1 -0
- package/dist/commands/initWorktree.js +348 -0
- package/dist/commands/initWorktree.js.map +1 -0
- package/dist/commands/resolve.d.ts +30 -0
- package/dist/commands/resolve.d.ts.map +1 -0
- package/dist/commands/resolve.js +166 -0
- package/dist/commands/resolve.js.map +1 -0
- package/dist/index.js +59 -5
- package/dist/index.js.map +1 -1
- package/dist/utils/agentEntryPoints.d.ts +68 -0
- package/dist/utils/agentEntryPoints.d.ts.map +1 -0
- package/dist/utils/agentEntryPoints.js +112 -0
- package/dist/utils/agentEntryPoints.js.map +1 -0
- package/dist/utils/authServer.d.ts +51 -1
- package/dist/utils/authServer.d.ts.map +1 -1
- package/dist/utils/authServer.js +77 -0
- package/dist/utils/authServer.js.map +1 -1
- package/dist/utils/doctorOutput.d.ts.map +1 -1
- package/dist/utils/doctorOutput.js +7 -3
- package/dist/utils/doctorOutput.js.map +1 -1
- package/dist/utils/entityId.d.ts.map +1 -1
- package/dist/utils/entityId.js +18 -5
- package/dist/utils/entityId.js.map +1 -1
- package/dist/utils/entityRef.d.ts +52 -0
- package/dist/utils/entityRef.d.ts.map +1 -0
- package/dist/utils/entityRef.js +259 -0
- package/dist/utils/entityRef.js.map +1 -0
- package/dist/utils/git.d.ts +28 -0
- package/dist/utils/git.d.ts.map +1 -1
- package/dist/utils/git.js +43 -0
- package/dist/utils/git.js.map +1 -1
- package/dist/utils/initOutput.d.ts.map +1 -1
- package/dist/utils/initOutput.js +97 -15
- package/dist/utils/initOutput.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,259 @@
|
|
|
1
|
+
import { stripEntityIdPrefix } from './entityId.js';
|
|
2
|
+
/**
|
|
3
|
+
* Canonical prefix codes mirror `cli/src/utils/entityId.ts` and
|
|
4
|
+
* `web/src/lib/entityId.ts` (`entityPrefixByType`). The codes live here because
|
|
5
|
+
* the shared `stripEntityIdPrefix` only removes a prefix — it cannot tell which
|
|
6
|
+
* type a prefix belongs to, which is exactly what reverse inference needs.
|
|
7
|
+
* Stripping itself is always delegated, never re-implemented.
|
|
8
|
+
*/
|
|
9
|
+
const ENTITY_REF_DESCRIPTORS = [
|
|
10
|
+
{ refType: 'plan', prefixCode: 'pln', kind: 'file', resolver: 'agentteams plan download --id <id>' },
|
|
11
|
+
{ refType: 'completionReport', prefixCode: 'rpt', kind: 'file', resolver: 'agentteams report download --id <id>' },
|
|
12
|
+
{ refType: 'postMortem', prefixCode: 'pmt', kind: 'file', resolver: 'agentteams postmortem download --id <id>' },
|
|
13
|
+
{ refType: 'coAction', prefixCode: 'act', kind: 'file', resolver: 'agentteams coaction download --id <id>' },
|
|
14
|
+
{ refType: 'document', prefixCode: 'doc', kind: 'file', resolver: 'agentteams document download --id <id>' },
|
|
15
|
+
{ refType: 'codeReview', prefixCode: 'rev', kind: 'record', resolver: 'agentteams code-review get --id <id>' },
|
|
16
|
+
{
|
|
17
|
+
refType: 'codeReviewFinding',
|
|
18
|
+
prefixCode: 'rvf',
|
|
19
|
+
kind: 'record',
|
|
20
|
+
resolver: 'agentteams code-review get --finding-id <id>',
|
|
21
|
+
},
|
|
22
|
+
{ refType: 'planTask', prefixCode: 'tsk', kind: 'record', resolver: 'agentteams task get --task-id <id>' },
|
|
23
|
+
{
|
|
24
|
+
refType: 'convention',
|
|
25
|
+
prefixCode: 'cnv',
|
|
26
|
+
// A convention reference usually carries the local path it was deployed to,
|
|
27
|
+
// so the default resolution is a local read; the id-only form falls back to
|
|
28
|
+
// a server fetch (see `resolveConventionKind`).
|
|
29
|
+
kind: 'localFile',
|
|
30
|
+
resolver: 'read the local path from the reference',
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
refType: 'LINEAR_ISSUE',
|
|
34
|
+
kind: 'record',
|
|
35
|
+
external: true,
|
|
36
|
+
resolver: 'agentteams linear issue get --issue-id <id>',
|
|
37
|
+
},
|
|
38
|
+
{ refType: 'GITHUB_ISSUE', kind: 'external', external: true, resolver: 'gh issue view <number> --repo <owner/repo>' },
|
|
39
|
+
{ refType: 'GITHUB_PR', kind: 'external', external: true, resolver: 'gh pr view <number> --repo <owner/repo>' },
|
|
40
|
+
{
|
|
41
|
+
refType: 'GITLAB_ISSUE',
|
|
42
|
+
kind: 'external',
|
|
43
|
+
external: true,
|
|
44
|
+
resolver: 'glab issue view <iid> --repo <projectPath>',
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
refType: 'GITLAB_MERGE_REQUEST',
|
|
48
|
+
kind: 'external',
|
|
49
|
+
external: true,
|
|
50
|
+
resolver: 'glab mr view <iid> --repo <projectPath>',
|
|
51
|
+
},
|
|
52
|
+
{ refType: 'BITBUCKET_ISSUE', kind: 'external', external: true, resolver: 'open the issue URL' },
|
|
53
|
+
{ refType: 'BITBUCKET_PR', kind: 'external', external: true, resolver: 'open the pull request URL' },
|
|
54
|
+
];
|
|
55
|
+
const descriptorByRefType = new Map(ENTITY_REF_DESCRIPTORS.map((descriptor) => [descriptor.refType.toLowerCase(), descriptor]));
|
|
56
|
+
const descriptorByPrefixCode = new Map(ENTITY_REF_DESCRIPTORS.filter((descriptor) => descriptor.prefixCode).map((descriptor) => [
|
|
57
|
+
descriptor.prefixCode,
|
|
58
|
+
descriptor,
|
|
59
|
+
]));
|
|
60
|
+
export const SUPPORTED_REF_FORMS = [
|
|
61
|
+
'type:id (e.g. plan:agentteams_pln_<uuid>)',
|
|
62
|
+
'type:id:path (convention:<id>:.agentteams/rules/context.md)',
|
|
63
|
+
'parent:child (codeReview:<reviewId>:<findingId>, plan:<planId>:<taskId>)',
|
|
64
|
+
'bare prefixed id (agentteams_doc_<uuid>)',
|
|
65
|
+
'external marker (LINEAR_ISSUE:<uuid>, GITHUB_ISSUE:<owner/repo#n>, GITHUB_PR, GITLAB_ISSUE, GITLAB_MERGE_REQUEST, BITBUCKET_ISSUE, BITBUCKET_PR)',
|
|
66
|
+
'a whole markdown link wrapping any of the above ([label](type:id))',
|
|
67
|
+
].join('; ');
|
|
68
|
+
const SUPPORTED_REF_TYPES = ENTITY_REF_DESCRIPTORS.map((descriptor) => descriptor.refType).join(', ');
|
|
69
|
+
function unsupported(input, reason) {
|
|
70
|
+
return new Error(`Unsupported entity reference: ${input} (${reason}). Supported forms: ${SUPPORTED_REF_FORMS}. Supported types: ${SUPPORTED_REF_TYPES}. A plain https link is not an entity reference — open the URL directly.`);
|
|
71
|
+
}
|
|
72
|
+
const MARKDOWN_LINK_PATTERN = /^\[([^\]]*)\]\((.+)\)$/;
|
|
73
|
+
const PREFIXED_ID_PATTERN = /^agentteams_([a-z]{3})_(.+)$/;
|
|
74
|
+
/**
|
|
75
|
+
* Every AgentTeams entity id is a bare UUID (mirrors `uuidBodyPattern` in
|
|
76
|
+
* `web/src/lib/entityId.ts`). References arrive from user-authored text, and a
|
|
77
|
+
* parsed id is interpolated straight into an API path, so anything that is not
|
|
78
|
+
* a UUID is rejected here rather than sent to the server. External markers are
|
|
79
|
+
* exempt — their locators are not AgentTeams ids.
|
|
80
|
+
*/
|
|
81
|
+
const ENTITY_UUID_PATTERN = /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/;
|
|
82
|
+
/** Sentinel host the web editor uses when a reference has no real web URL. */
|
|
83
|
+
const ENTITY_REF_SENTINEL_HOST = '__entity_ref__';
|
|
84
|
+
/**
|
|
85
|
+
* Unwrap the layers a reference can arrive in — a whole markdown link and/or
|
|
86
|
+
* the `https://__entity_ref__/<encoded token>` URL the editor serializes — down
|
|
87
|
+
* to the bare `type:id` token.
|
|
88
|
+
*/
|
|
89
|
+
function unwrapRefTarget(input) {
|
|
90
|
+
const linkMatch = input.match(MARKDOWN_LINK_PATTERN);
|
|
91
|
+
const label = linkMatch?.[1]?.trim() || undefined;
|
|
92
|
+
let target = (linkMatch?.[2] ?? input).trim();
|
|
93
|
+
if (target.startsWith(`https://${ENTITY_REF_SENTINEL_HOST}/`) ||
|
|
94
|
+
target.startsWith(`http://${ENTITY_REF_SENTINEL_HOST}/`)) {
|
|
95
|
+
const encoded = target.slice(target.indexOf(ENTITY_REF_SENTINEL_HOST) + ENTITY_REF_SENTINEL_HOST.length + 1);
|
|
96
|
+
target = decodeURIComponent(encoded).trim();
|
|
97
|
+
}
|
|
98
|
+
return { target, label };
|
|
99
|
+
}
|
|
100
|
+
function buildExternalTarget(refType, locator) {
|
|
101
|
+
const hashIndex = locator.lastIndexOf('#');
|
|
102
|
+
const bangIndex = locator.lastIndexOf('!');
|
|
103
|
+
if (refType === 'GITHUB_ISSUE' || refType === 'GITHUB_PR') {
|
|
104
|
+
if (hashIndex <= 0)
|
|
105
|
+
return {};
|
|
106
|
+
const repo = locator.slice(0, hashIndex);
|
|
107
|
+
const number = locator.slice(hashIndex + 1);
|
|
108
|
+
const segment = refType === 'GITHUB_ISSUE' ? 'issues' : 'pull';
|
|
109
|
+
const command = refType === 'GITHUB_ISSUE' ? 'issue' : 'pr';
|
|
110
|
+
return {
|
|
111
|
+
url: `https://github.com/${repo}/${segment}/${number}`,
|
|
112
|
+
suggestedCommand: `gh ${command} view ${number} --repo ${repo}`,
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
if (refType === 'GITLAB_ISSUE' || refType === 'GITLAB_MERGE_REQUEST') {
|
|
116
|
+
const separatorIndex = refType === 'GITLAB_ISSUE' ? hashIndex : bangIndex;
|
|
117
|
+
if (separatorIndex <= 0)
|
|
118
|
+
return {};
|
|
119
|
+
const projectPath = locator.slice(0, separatorIndex);
|
|
120
|
+
const iid = locator.slice(separatorIndex + 1);
|
|
121
|
+
const command = refType === 'GITLAB_ISSUE' ? 'issue' : 'mr';
|
|
122
|
+
// No url: the GitLab host can be self-managed and is not derivable from the
|
|
123
|
+
// project path, so `glab` (which reads the configured host) is the answer.
|
|
124
|
+
return { suggestedCommand: `glab ${command} view ${iid} --repo ${projectPath}` };
|
|
125
|
+
}
|
|
126
|
+
if (refType === 'BITBUCKET_ISSUE' || refType === 'BITBUCKET_PR') {
|
|
127
|
+
if (hashIndex <= 0)
|
|
128
|
+
return {};
|
|
129
|
+
const repo = locator.slice(0, hashIndex);
|
|
130
|
+
const id = locator.slice(hashIndex + 1);
|
|
131
|
+
const segment = refType === 'BITBUCKET_ISSUE' ? 'issues' : 'pull-requests';
|
|
132
|
+
return { url: `https://bitbucket.org/${repo}/${segment}/${id}` };
|
|
133
|
+
}
|
|
134
|
+
return {};
|
|
135
|
+
}
|
|
136
|
+
function buildFallbackCommand(descriptor, parsed) {
|
|
137
|
+
return descriptor.resolver.replace('<id>', parsed.id);
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* A `convention:<id>` reference without a path cannot be read locally, so it
|
|
141
|
+
* degrades to a server fetch instead of the usual local read.
|
|
142
|
+
*/
|
|
143
|
+
function resolveConventionKind(path) {
|
|
144
|
+
return path ? 'localFile' : 'record';
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Parse an entity reference token into the type, bare id, and resolution kind.
|
|
148
|
+
* Pure: no filesystem, no network.
|
|
149
|
+
*/
|
|
150
|
+
export function parseEntityRef(input) {
|
|
151
|
+
if (typeof input !== 'string' || input.trim().length === 0) {
|
|
152
|
+
throw unsupported(String(input), 'empty reference');
|
|
153
|
+
}
|
|
154
|
+
const raw = input.trim();
|
|
155
|
+
const { target, label } = unwrapRefTarget(raw);
|
|
156
|
+
if (target.length === 0) {
|
|
157
|
+
throw unsupported(raw, 'empty reference target');
|
|
158
|
+
}
|
|
159
|
+
const prefixedMatch = target.match(PREFIXED_ID_PATTERN);
|
|
160
|
+
if (prefixedMatch) {
|
|
161
|
+
const descriptor = descriptorByPrefixCode.get(prefixedMatch[1]);
|
|
162
|
+
if (!descriptor) {
|
|
163
|
+
throw unsupported(raw, `unknown id prefix agentteams_${prefixedMatch[1]}_`);
|
|
164
|
+
}
|
|
165
|
+
const id = stripEntityIdPrefix(target);
|
|
166
|
+
return finalize({ raw, label, descriptor, id });
|
|
167
|
+
}
|
|
168
|
+
const typeSeparator = target.indexOf(':');
|
|
169
|
+
if (typeSeparator <= 0) {
|
|
170
|
+
throw unsupported(raw, 'no type could be determined');
|
|
171
|
+
}
|
|
172
|
+
const typeToken = target.slice(0, typeSeparator);
|
|
173
|
+
const rest = target.slice(typeSeparator + 1).trim();
|
|
174
|
+
const descriptor = descriptorByRefType.get(typeToken.toLowerCase());
|
|
175
|
+
if (!descriptor) {
|
|
176
|
+
throw unsupported(raw, `unknown reference type "${typeToken}"`);
|
|
177
|
+
}
|
|
178
|
+
if (rest.length === 0) {
|
|
179
|
+
throw unsupported(raw, 'reference has no id');
|
|
180
|
+
}
|
|
181
|
+
// External locators (`owner/repo#12`, `group/project!7`) never contain a
|
|
182
|
+
// colon, so they are taken whole rather than split further.
|
|
183
|
+
if (descriptor.external) {
|
|
184
|
+
return finalize({ raw, label, descriptor, id: rest, skipPrefixStrip: true });
|
|
185
|
+
}
|
|
186
|
+
const idSeparator = rest.indexOf(':');
|
|
187
|
+
const idPart = idSeparator === -1 ? rest : rest.slice(0, idSeparator).trim();
|
|
188
|
+
const thirdPart = idSeparator === -1 ? undefined : rest.slice(idSeparator + 1).trim();
|
|
189
|
+
if (idPart.length === 0) {
|
|
190
|
+
throw unsupported(raw, 'reference has no id');
|
|
191
|
+
}
|
|
192
|
+
if (thirdPart === undefined) {
|
|
193
|
+
return finalize({ raw, label, descriptor, id: idPart });
|
|
194
|
+
}
|
|
195
|
+
if (thirdPart.length === 0) {
|
|
196
|
+
throw unsupported(raw, 'three-part reference has an empty third segment');
|
|
197
|
+
}
|
|
198
|
+
// The same three-part grammar carries a local path for conventions and a
|
|
199
|
+
// child id for code reviews and plans, so the parent type decides.
|
|
200
|
+
if (descriptor.refType === 'convention') {
|
|
201
|
+
return finalize({ raw, label, descriptor, id: idPart, path: thirdPart });
|
|
202
|
+
}
|
|
203
|
+
if (descriptor.refType === 'codeReview') {
|
|
204
|
+
return finalize({
|
|
205
|
+
raw,
|
|
206
|
+
label,
|
|
207
|
+
descriptor: descriptorByRefType.get('codereviewfinding'),
|
|
208
|
+
id: thirdPart,
|
|
209
|
+
parentId: stripEntityIdPrefix(idPart),
|
|
210
|
+
});
|
|
211
|
+
}
|
|
212
|
+
if (descriptor.refType === 'plan') {
|
|
213
|
+
return finalize({
|
|
214
|
+
raw,
|
|
215
|
+
label,
|
|
216
|
+
descriptor: descriptorByRefType.get('plantask'),
|
|
217
|
+
id: thirdPart,
|
|
218
|
+
parentId: stripEntityIdPrefix(idPart),
|
|
219
|
+
});
|
|
220
|
+
}
|
|
221
|
+
throw unsupported(raw, `three-part references are not supported for type "${descriptor.refType}"`);
|
|
222
|
+
}
|
|
223
|
+
function finalize(input) {
|
|
224
|
+
const { raw, label, descriptor, parentId, path, skipPrefixStrip } = input;
|
|
225
|
+
const id = skipPrefixStrip ? input.id : stripEntityIdPrefix(input.id);
|
|
226
|
+
if (descriptor.prefixCode) {
|
|
227
|
+
if (!ENTITY_UUID_PATTERN.test(id)) {
|
|
228
|
+
throw unsupported(raw, `"${id}" is not a valid ${descriptor.refType} id (expected a UUID)`);
|
|
229
|
+
}
|
|
230
|
+
if (parentId !== undefined && !ENTITY_UUID_PATTERN.test(parentId)) {
|
|
231
|
+
throw unsupported(raw, `"${parentId}" is not a valid parent id (expected a UUID)`);
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
const kind = descriptor.refType === 'convention' ? resolveConventionKind(path) : descriptor.kind;
|
|
235
|
+
const external = descriptor.external === true;
|
|
236
|
+
const { url, suggestedCommand } = external ? buildExternalTarget(descriptor.refType, id) : {};
|
|
237
|
+
const parsed = {
|
|
238
|
+
raw,
|
|
239
|
+
refType: descriptor.refType,
|
|
240
|
+
id,
|
|
241
|
+
kind,
|
|
242
|
+
external,
|
|
243
|
+
// A derived `gh`/`glab` invocation is strictly more useful than the generic
|
|
244
|
+
// template, so it doubles as the fallback for SCM references.
|
|
245
|
+
fallbackCommand: suggestedCommand ?? buildFallbackCommand(descriptor, { id }),
|
|
246
|
+
};
|
|
247
|
+
if (label)
|
|
248
|
+
parsed.label = label;
|
|
249
|
+
if (parentId)
|
|
250
|
+
parsed.parentId = parentId;
|
|
251
|
+
if (path)
|
|
252
|
+
parsed.path = path;
|
|
253
|
+
if (url)
|
|
254
|
+
parsed.url = url;
|
|
255
|
+
if (suggestedCommand)
|
|
256
|
+
parsed.suggestedCommand = suggestedCommand;
|
|
257
|
+
return parsed;
|
|
258
|
+
}
|
|
259
|
+
//# sourceMappingURL=entityRef.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entityRef.js","sourceRoot":"","sources":["../../src/utils/entityRef.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAkDpD;;;;;;GAMG;AACH,MAAM,sBAAsB,GAA0B;IACpD,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,oCAAoC,EAAE;IACpG,EAAE,OAAO,EAAE,kBAAkB,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,sCAAsC,EAAE;IAClH,EAAE,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,0CAA0C,EAAE;IAChH,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,wCAAwC,EAAE;IAC5G,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,wCAAwC,EAAE;IAC5G,EAAE,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,sCAAsC,EAAE;IAC9G;QACE,OAAO,EAAE,mBAAmB;QAC5B,UAAU,EAAE,KAAK;QACjB,IAAI,EAAE,QAAQ;QACd,QAAQ,EAAE,8CAA8C;KACzD;IACD,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,oCAAoC,EAAE;IAC1G;QACE,OAAO,EAAE,YAAY;QACrB,UAAU,EAAE,KAAK;QACjB,4EAA4E;QAC5E,4EAA4E;QAC5E,gDAAgD;QAChD,IAAI,EAAE,WAAW;QACjB,QAAQ,EAAE,wCAAwC;KACnD;IACD;QACE,OAAO,EAAE,cAAc;QACvB,IAAI,EAAE,QAAQ;QACd,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,6CAA6C;KACxD;IACD,EAAE,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,4CAA4C,EAAE;IACrH,EAAE,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,yCAAyC,EAAE;IAC/G;QACE,OAAO,EAAE,cAAc;QACvB,IAAI,EAAE,UAAU;QAChB,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,4CAA4C;KACvD;IACD;QACE,OAAO,EAAE,sBAAsB;QAC/B,IAAI,EAAE,UAAU;QAChB,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,yCAAyC;KACpD;IACD,EAAE,OAAO,EAAE,iBAAiB,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,oBAAoB,EAAE;IAChG,EAAE,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,2BAA2B,EAAE;CACrG,CAAC;AAEF,MAAM,mBAAmB,GAAG,IAAI,GAAG,CACjC,sBAAsB,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,UAAU,CAAC,CAAC,CAC3F,CAAC;AAEF,MAAM,sBAAsB,GAAG,IAAI,GAAG,CACpC,sBAAsB,CAAC,MAAM,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC;IACvF,UAAU,CAAC,UAAoB;IAC/B,UAAU;CACX,CAAC,CACH,CAAC;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,2CAA2C;IAC3C,6DAA6D;IAC7D,0EAA0E;IAC1E,0CAA0C;IAC1C,kJAAkJ;IAClJ,oEAAoE;CACrE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAEb,MAAM,mBAAmB,GAAG,sBAAsB,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAEtG,SAAS,WAAW,CAAC,KAAa,EAAE,MAAc;IAChD,OAAO,IAAI,KAAK,CACd,iCAAiC,KAAK,KAAK,MAAM,uBAAuB,mBAAmB,sBAAsB,mBAAmB,0EAA0E,CAC/M,CAAC;AACJ,CAAC;AAED,MAAM,qBAAqB,GAAG,wBAAwB,CAAC;AACvD,MAAM,mBAAmB,GAAG,8BAA8B,CAAC;AAC3D;;;;;;GAMG;AACH,MAAM,mBAAmB,GAAG,+EAA+E,CAAC;AAC5G,8EAA8E;AAC9E,MAAM,wBAAwB,GAAG,gBAAgB,CAAC;AAElD;;;;GAIG;AACH,SAAS,eAAe,CAAC,KAAa;IACpC,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;IACrD,MAAM,KAAK,GAAG,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,SAAS,CAAC;IAClD,IAAI,MAAM,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;IAE9C,IACE,MAAM,CAAC,UAAU,CAAC,WAAW,wBAAwB,GAAG,CAAC;QACzD,MAAM,CAAC,UAAU,CAAC,UAAU,wBAAwB,GAAG,CAAC,EACxD,CAAC;QACD,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,wBAAwB,CAAC,GAAG,wBAAwB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAC7G,MAAM,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;IAC9C,CAAC;IAED,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;AAC3B,CAAC;AAED,SAAS,mBAAmB,CAAC,OAAe,EAAE,OAAe;IAC3D,MAAM,SAAS,GAAG,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAC3C,MAAM,SAAS,GAAG,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAE3C,IAAI,OAAO,KAAK,cAAc,IAAI,OAAO,KAAK,WAAW,EAAE,CAAC;QAC1D,IAAI,SAAS,IAAI,CAAC;YAAE,OAAO,EAAE,CAAC;QAC9B,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;QACzC,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;QAC5C,MAAM,OAAO,GAAG,OAAO,KAAK,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC;QAC/D,MAAM,OAAO,GAAG,OAAO,KAAK,cAAc,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;QAC5D,OAAO;YACL,GAAG,EAAE,sBAAsB,IAAI,IAAI,OAAO,IAAI,MAAM,EAAE;YACtD,gBAAgB,EAAE,MAAM,OAAO,SAAS,MAAM,WAAW,IAAI,EAAE;SAChE,CAAC;IACJ,CAAC;IAED,IAAI,OAAO,KAAK,cAAc,IAAI,OAAO,KAAK,sBAAsB,EAAE,CAAC;QACrE,MAAM,cAAc,GAAG,OAAO,KAAK,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;QAC1E,IAAI,cAAc,IAAI,CAAC;YAAE,OAAO,EAAE,CAAC;QACnC,MAAM,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC;QACrD,MAAM,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,cAAc,GAAG,CAAC,CAAC,CAAC;QAC9C,MAAM,OAAO,GAAG,OAAO,KAAK,cAAc,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;QAC5D,4EAA4E;QAC5E,2EAA2E;QAC3E,OAAO,EAAE,gBAAgB,EAAE,QAAQ,OAAO,SAAS,GAAG,WAAW,WAAW,EAAE,EAAE,CAAC;IACnF,CAAC;IAED,IAAI,OAAO,KAAK,iBAAiB,IAAI,OAAO,KAAK,cAAc,EAAE,CAAC;QAChE,IAAI,SAAS,IAAI,CAAC;YAAE,OAAO,EAAE,CAAC;QAC9B,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;QACzC,MAAM,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;QACxC,MAAM,OAAO,GAAG,OAAO,KAAK,iBAAiB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,eAAe,CAAC;QAC3E,OAAO,EAAE,GAAG,EAAE,yBAAyB,IAAI,IAAI,OAAO,IAAI,EAAE,EAAE,EAAE,CAAC;IACnE,CAAC;IAED,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,SAAS,oBAAoB,CAAC,UAA+B,EAAE,MAAsB;IACnF,OAAO,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;AACxD,CAAC;AAED;;;GAGG;AACH,SAAS,qBAAqB,CAAC,IAAwB;IACrD,OAAO,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC;AACvC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,KAAa;IAC1C,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3D,MAAM,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,iBAAiB,CAAC,CAAC;IACtD,CAAC;IAED,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IACzB,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;IAC/C,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,MAAM,WAAW,CAAC,GAAG,EAAE,wBAAwB,CAAC,CAAC;IACnD,CAAC;IAED,MAAM,aAAa,GAAG,MAAM,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACxD,IAAI,aAAa,EAAE,CAAC;QAClB,MAAM,UAAU,GAAG,sBAAsB,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAW,CAAC,CAAC;QAC1E,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,MAAM,WAAW,CAAC,GAAG,EAAE,gCAAgC,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QAC9E,CAAC;QACD,MAAM,EAAE,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC;QACvC,OAAO,QAAQ,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,CAAC;IAClD,CAAC;IAED,MAAM,aAAa,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC1C,IAAI,aAAa,IAAI,CAAC,EAAE,CAAC;QACvB,MAAM,WAAW,CAAC,GAAG,EAAE,6BAA6B,CAAC,CAAC;IACxD,CAAC;IAED,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC;IACjD,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,aAAa,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IACpD,MAAM,UAAU,GAAG,mBAAmB,CAAC,GAAG,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,CAAC;IACpE,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,MAAM,WAAW,CAAC,GAAG,EAAE,2BAA2B,SAAS,GAAG,CAAC,CAAC;IAClE,CAAC;IACD,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,MAAM,WAAW,CAAC,GAAG,EAAE,qBAAqB,CAAC,CAAC;IAChD,CAAC;IAED,yEAAyE;IACzE,4DAA4D;IAC5D,IAAI,UAAU,CAAC,QAAQ,EAAE,CAAC;QACxB,OAAO,QAAQ,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC,CAAC;IAC/E,CAAC;IAED,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACtC,MAAM,MAAM,GAAG,WAAW,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,IAAI,EAAE,CAAC;IAC7E,MAAM,SAAS,GAAG,WAAW,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IACtF,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,MAAM,WAAW,CAAC,GAAG,EAAE,qBAAqB,CAAC,CAAC;IAChD,CAAC;IAED,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;QAC5B,OAAO,QAAQ,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;IAC1D,CAAC;IACD,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3B,MAAM,WAAW,CAAC,GAAG,EAAE,iDAAiD,CAAC,CAAC;IAC5E,CAAC;IAED,yEAAyE;IACzE,mEAAmE;IACnE,IAAI,UAAU,CAAC,OAAO,KAAK,YAAY,EAAE,CAAC;QACxC,OAAO,QAAQ,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;IAC3E,CAAC;IACD,IAAI,UAAU,CAAC,OAAO,KAAK,YAAY,EAAE,CAAC;QACxC,OAAO,QAAQ,CAAC;YACd,GAAG;YACH,KAAK;YACL,UAAU,EAAE,mBAAmB,CAAC,GAAG,CAAC,mBAAmB,CAAwB;YAC/E,EAAE,EAAE,SAAS;YACb,QAAQ,EAAE,mBAAmB,CAAC,MAAM,CAAC;SACtC,CAAC,CAAC;IACL,CAAC;IACD,IAAI,UAAU,CAAC,OAAO,KAAK,MAAM,EAAE,CAAC;QAClC,OAAO,QAAQ,CAAC;YACd,GAAG;YACH,KAAK;YACL,UAAU,EAAE,mBAAmB,CAAC,GAAG,CAAC,UAAU,CAAwB;YACtE,EAAE,EAAE,SAAS;YACb,QAAQ,EAAE,mBAAmB,CAAC,MAAM,CAAC;SACtC,CAAC,CAAC;IACL,CAAC;IAED,MAAM,WAAW,CAAC,GAAG,EAAE,qDAAqD,UAAU,CAAC,OAAO,GAAG,CAAC,CAAC;AACrG,CAAC;AAED,SAAS,QAAQ,CAAC,KAQjB;IACC,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE,eAAe,EAAE,GAAG,KAAK,CAAC;IAC1E,MAAM,EAAE,GAAG,eAAe,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,mBAAmB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACtE,IAAI,UAAU,CAAC,UAAU,EAAE,CAAC;QAC1B,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;YAClC,MAAM,WAAW,CAAC,GAAG,EAAE,IAAI,EAAE,oBAAoB,UAAU,CAAC,OAAO,uBAAuB,CAAC,CAAC;QAC9F,CAAC;QACD,IAAI,QAAQ,KAAK,SAAS,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;YAClE,MAAM,WAAW,CAAC,GAAG,EAAE,IAAI,QAAQ,8CAA8C,CAAC,CAAC;QACrF,CAAC;IACH,CAAC;IACD,MAAM,IAAI,GAAG,UAAU,CAAC,OAAO,KAAK,YAAY,CAAC,CAAC,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC;IACjG,MAAM,QAAQ,GAAG,UAAU,CAAC,QAAQ,KAAK,IAAI,CAAC;IAC9C,MAAM,EAAE,GAAG,EAAE,gBAAgB,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC,mBAAmB,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAE9F,MAAM,MAAM,GAAoB;QAC9B,GAAG;QACH,OAAO,EAAE,UAAU,CAAC,OAAO;QAC3B,EAAE;QACF,IAAI;QACJ,QAAQ;QACR,4EAA4E;QAC5E,8DAA8D;QAC9D,eAAe,EAAE,gBAAgB,IAAI,oBAAoB,CAAC,UAAU,EAAE,EAAE,EAAE,EAAE,CAAC;KAC9E,CAAC;IACF,IAAI,KAAK;QAAE,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;IAChC,IAAI,QAAQ;QAAE,MAAM,CAAC,QAAQ,GAAG,QAAQ,CAAC;IACzC,IAAI,IAAI;QAAE,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;IAC7B,IAAI,GAAG;QAAE,MAAM,CAAC,GAAG,GAAG,GAAG,CAAC;IAC1B,IAAI,gBAAgB;QAAE,MAAM,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;IACjE,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
package/dist/utils/git.d.ts
CHANGED
|
@@ -21,6 +21,34 @@ export declare function collectGitMetrics(execFileSyncImpl?: ExecFileSyncFn, opt
|
|
|
21
21
|
}): GitMetrics;
|
|
22
22
|
export declare function getGitRemoteOriginUrl(execFileSyncImpl?: ExecFileSyncFn): string | undefined;
|
|
23
23
|
export declare function resolveMainCheckoutRoot(cwd: string, execFileSyncImpl?: ExecFileSyncFn): string | null;
|
|
24
|
+
/**
|
|
25
|
+
* Does this repository already use linked worktrees?
|
|
26
|
+
*
|
|
27
|
+
* `git worktree list --porcelain` emits one blank-line separated block per
|
|
28
|
+
* worktree, the main checkout first. Counting `worktree ` lines is not enough:
|
|
29
|
+
* a worktree whose directory has been deleted keeps its block — marked
|
|
30
|
+
* `prunable` — until `git worktree prune` runs, so a repository that no longer
|
|
31
|
+
* has any linked worktree would still report one.
|
|
32
|
+
*
|
|
33
|
+
* This deliberately does not try to predict a *future* `git worktree add`: there
|
|
34
|
+
* is no signal for that, and guessing wrong in the permissive direction is what
|
|
35
|
+
* made `agentteams init` write a shared hooks directory for every project.
|
|
36
|
+
* `agentteams doctor --install-worktree-hook` installs the hook on demand, so a
|
|
37
|
+
* wrong guess here costs one command.
|
|
38
|
+
*/
|
|
39
|
+
export declare function hasLinkedGitWorktrees(cwd: string, execFileSyncImpl?: ExecFileSyncFn): boolean;
|
|
40
|
+
/**
|
|
41
|
+
* The single rule for "may the managed post-checkout hook be written to this
|
|
42
|
+
* repository's shared hooks directory?".
|
|
43
|
+
*
|
|
44
|
+
* `init` and `doctor` both install that hook, and they must agree: when only
|
|
45
|
+
* `init` gated the write, running `agentteams init` a second time took the
|
|
46
|
+
* configured-project fast path, which calls `doctor`, which installed the hook
|
|
47
|
+
* anyway — the gate existed but never held.
|
|
48
|
+
*/
|
|
49
|
+
export declare function shouldInstallWorktreeHook(cwd: string, options?: {
|
|
50
|
+
force?: boolean;
|
|
51
|
+
}, execFileSyncImpl?: ExecFileSyncFn): boolean;
|
|
24
52
|
export declare function resolveGitTopLevel(cwd: string, execFileSyncImpl?: ExecFileSyncFn): string | null;
|
|
25
53
|
export {};
|
|
26
54
|
//# sourceMappingURL=git.d.ts.map
|
package/dist/utils/git.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"git.d.ts","sourceRoot":"","sources":["../../src/utils/git.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,UAAU;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,KAAK,cAAc,GAAG,CACpB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,OAAO,EAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;IAAC,WAAW,CAAC,EAAE,OAAO,CAAA;CAAE,KACpG,MAAM,CAAC;AAEZ,wBAAgB,iBAAiB,CAC/B,gBAAgB,GAAE,cAA0C,EAC5D,OAAO,CAAC,EAAE;IAAE,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,GACjC,UAAU,CAgBZ;AAED,wBAAgB,qBAAqB,CACnC,gBAAgB,GAAE,cAA0C,GAC3D,MAAM,GAAG,SAAS,CAEpB;AAED,wBAAgB,uBAAuB,CACrC,GAAG,EAAE,MAAM,EACX,gBAAgB,GAAE,cAA0C,GAC3D,MAAM,GAAG,IAAI,CAcf;AAED,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,MAAM,EACX,gBAAgB,GAAE,cAA0C,GAC3D,MAAM,GAAG,IAAI,CASf"}
|
|
1
|
+
{"version":3,"file":"git.d.ts","sourceRoot":"","sources":["../../src/utils/git.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,UAAU;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,KAAK,cAAc,GAAG,CACpB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,OAAO,EAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;IAAC,WAAW,CAAC,EAAE,OAAO,CAAA;CAAE,KACpG,MAAM,CAAC;AAEZ,wBAAgB,iBAAiB,CAC/B,gBAAgB,GAAE,cAA0C,EAC5D,OAAO,CAAC,EAAE;IAAE,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,GACjC,UAAU,CAgBZ;AAED,wBAAgB,qBAAqB,CACnC,gBAAgB,GAAE,cAA0C,GAC3D,MAAM,GAAG,SAAS,CAEpB;AAED,wBAAgB,uBAAuB,CACrC,GAAG,EAAE,MAAM,EACX,gBAAgB,GAAE,cAA0C,GAC3D,MAAM,GAAG,IAAI,CAcf;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,qBAAqB,CACnC,GAAG,EAAE,MAAM,EACX,gBAAgB,GAAE,cAA0C,GAC3D,OAAO,CAgBT;AAED;;;;;;;;GAQG;AACH,wBAAgB,yBAAyB,CACvC,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,EAC7B,gBAAgB,GAAE,cAA0C,GAC3D,OAAO,CAGT;AAED,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,MAAM,EACX,gBAAgB,GAAE,cAA0C,GAC3D,MAAM,GAAG,IAAI,CASf"}
|
package/dist/utils/git.js
CHANGED
|
@@ -34,6 +34,49 @@ export function resolveMainCheckoutRoot(cwd, execFileSyncImpl = childProcess.exe
|
|
|
34
34
|
return dirname(absoluteCommonDir);
|
|
35
35
|
}
|
|
36
36
|
}
|
|
37
|
+
/**
|
|
38
|
+
* Does this repository already use linked worktrees?
|
|
39
|
+
*
|
|
40
|
+
* `git worktree list --porcelain` emits one blank-line separated block per
|
|
41
|
+
* worktree, the main checkout first. Counting `worktree ` lines is not enough:
|
|
42
|
+
* a worktree whose directory has been deleted keeps its block — marked
|
|
43
|
+
* `prunable` — until `git worktree prune` runs, so a repository that no longer
|
|
44
|
+
* has any linked worktree would still report one.
|
|
45
|
+
*
|
|
46
|
+
* This deliberately does not try to predict a *future* `git worktree add`: there
|
|
47
|
+
* is no signal for that, and guessing wrong in the permissive direction is what
|
|
48
|
+
* made `agentteams init` write a shared hooks directory for every project.
|
|
49
|
+
* `agentteams doctor --install-worktree-hook` installs the hook on demand, so a
|
|
50
|
+
* wrong guess here costs one command.
|
|
51
|
+
*/
|
|
52
|
+
export function hasLinkedGitWorktrees(cwd, execFileSyncImpl = childProcess.execFileSync) {
|
|
53
|
+
const output = runGit(execFileSyncImpl, ['worktree', 'list', '--porcelain'], cwd);
|
|
54
|
+
if (!output)
|
|
55
|
+
return false;
|
|
56
|
+
const records = output
|
|
57
|
+
.split(/\r?\n\s*\r?\n/)
|
|
58
|
+
.map((block) => block
|
|
59
|
+
.split(/\r?\n/)
|
|
60
|
+
.map((line) => line.trim())
|
|
61
|
+
.filter((line) => line.length > 0))
|
|
62
|
+
.filter((lines) => lines.some((line) => line.startsWith('worktree ')));
|
|
63
|
+
// The first record is the main checkout, which is never a linked worktree.
|
|
64
|
+
return records.slice(1).some((lines) => !lines.some((line) => line === 'prunable' || line.startsWith('prunable ')));
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* The single rule for "may the managed post-checkout hook be written to this
|
|
68
|
+
* repository's shared hooks directory?".
|
|
69
|
+
*
|
|
70
|
+
* `init` and `doctor` both install that hook, and they must agree: when only
|
|
71
|
+
* `init` gated the write, running `agentteams init` a second time took the
|
|
72
|
+
* configured-project fast path, which calls `doctor`, which installed the hook
|
|
73
|
+
* anyway — the gate existed but never held.
|
|
74
|
+
*/
|
|
75
|
+
export function shouldInstallWorktreeHook(cwd, options, execFileSyncImpl = childProcess.execFileSync) {
|
|
76
|
+
if (options?.force === true)
|
|
77
|
+
return true;
|
|
78
|
+
return hasLinkedGitWorktrees(cwd, execFileSyncImpl);
|
|
79
|
+
}
|
|
37
80
|
export function resolveGitTopLevel(cwd, execFileSyncImpl = childProcess.execFileSync) {
|
|
38
81
|
const topLevel = runGit(execFileSyncImpl, ['rev-parse', '--show-toplevel'], cwd);
|
|
39
82
|
if (!topLevel)
|
package/dist/utils/git.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"git.js","sourceRoot":"","sources":["../../src/utils/git.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"git.js","sourceRoot":"","sources":["../../src/utils/git.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"initOutput.d.ts","sourceRoot":"","sources":["../../src/utils/initOutput.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"initOutput.d.ts","sourceRoot":"","sources":["../../src/utils/initOutput.ts"],"names":[],"mappings":"AAUA,MAAM,MAAM,gBAAgB,GAAG,OAAO,GAAG,MAAM,CAAC;AAsGhD,wBAAgB,eAAe,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,gBAAgB,GAAG,IAAI,CAwK/E"}
|
package/dist/utils/initOutput.js
CHANGED
|
@@ -30,6 +30,54 @@ function isWorktreeInitResult(result) {
|
|
|
30
30
|
r.materialization === 'existing' ||
|
|
31
31
|
r.materialization === 'blocked'));
|
|
32
32
|
}
|
|
33
|
+
function isConfiguredProjectInitResult(result) {
|
|
34
|
+
if (!result || typeof result !== 'object')
|
|
35
|
+
return false;
|
|
36
|
+
const r = result;
|
|
37
|
+
return (r.success === true &&
|
|
38
|
+
r.mode === 'configured-project' &&
|
|
39
|
+
typeof r.configPath === 'string' &&
|
|
40
|
+
typeof r.conventionPath === 'string' &&
|
|
41
|
+
Array.isArray(r.readiness));
|
|
42
|
+
}
|
|
43
|
+
function printAgentFiles(agentFiles) {
|
|
44
|
+
for (const file of agentFiles ?? []) {
|
|
45
|
+
if (file.type === 'created') {
|
|
46
|
+
console.log(`✓ Agent file created: ${file.relativePath}`);
|
|
47
|
+
}
|
|
48
|
+
else if (file.type === 'example') {
|
|
49
|
+
console.log(`✓ Example file created: ${file.relativePath}`);
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
console.log(`- Agent file already exists, left untouched: ${file.relativePath}`);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
function printReadiness(readiness) {
|
|
57
|
+
console.log('');
|
|
58
|
+
console.log('Readiness:');
|
|
59
|
+
for (const step of readiness) {
|
|
60
|
+
const line = ` [${step.status}] ${step.stage}`;
|
|
61
|
+
if (step.status === 'DEGRADED') {
|
|
62
|
+
console.warn(line);
|
|
63
|
+
for (const issue of step.issues) {
|
|
64
|
+
console.warn(` ${issue.message}`);
|
|
65
|
+
}
|
|
66
|
+
console.warn(` Retry: ${step.retryCommand}`);
|
|
67
|
+
}
|
|
68
|
+
else {
|
|
69
|
+
console.log(line);
|
|
70
|
+
// Issues print at every status, not just SKIPPED. The `local-adapters`
|
|
71
|
+
// rollup turns READY as soon as one adapter succeeded — and `.gitignore`
|
|
72
|
+
// always does — so a run that created no entry point file and installed no
|
|
73
|
+
// hook still reports READY. Printing only the tag there left the reasons
|
|
74
|
+
// sitting in the JSON payload with nothing on screen.
|
|
75
|
+
for (const issue of step.issues) {
|
|
76
|
+
console.log(` ${issue.message}`);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
}
|
|
33
81
|
export function printInitResult(result, format) {
|
|
34
82
|
if (format === 'json') {
|
|
35
83
|
console.log(formatOutput(result));
|
|
@@ -80,6 +128,36 @@ export function printInitResult(result, format) {
|
|
|
80
128
|
console.log(' OAuth and interactive prompts were skipped because the main checkout is already configured.');
|
|
81
129
|
return;
|
|
82
130
|
}
|
|
131
|
+
if (isConfiguredProjectInitResult(result)) {
|
|
132
|
+
console.log('✓ Existing project binding reused; browser authentication was skipped.');
|
|
133
|
+
console.log(`✓ Config verified: ${result.configPath}`);
|
|
134
|
+
if (result.conventionError) {
|
|
135
|
+
console.warn(`⚠ Convention sync is degraded: ${result.conventionError}`);
|
|
136
|
+
}
|
|
137
|
+
else if (result.conventionsUpdated) {
|
|
138
|
+
console.log('✓ Conventions updated in .agentteams/.');
|
|
139
|
+
}
|
|
140
|
+
else {
|
|
141
|
+
console.log('✓ Conventions/platform guides already up to date.');
|
|
142
|
+
}
|
|
143
|
+
// A checkmark the readiness list below immediately contradicts reads as
|
|
144
|
+
// "done" to anyone skimming the log, so the mark follows doctor's verdict.
|
|
145
|
+
const doctorStatus = result.doctor?.status;
|
|
146
|
+
if (doctorStatus === 'READY') {
|
|
147
|
+
console.log('✓ Local adapters checked by agentteams doctor.');
|
|
148
|
+
}
|
|
149
|
+
else if (doctorStatus === 'DEGRADED') {
|
|
150
|
+
console.warn('⚠ Local adapters still need attention (agentteams doctor: DEGRADED).');
|
|
151
|
+
}
|
|
152
|
+
else if (doctorStatus) {
|
|
153
|
+
console.warn(`⚠ Local adapters were not checked (agentteams doctor: ${doctorStatus}).`);
|
|
154
|
+
}
|
|
155
|
+
// The fast path re-applies the local adapters, so a file it repaired has to
|
|
156
|
+
// be visible here too — otherwise the only proof of the write is on disk.
|
|
157
|
+
printAgentFiles(result.agentFiles);
|
|
158
|
+
printReadiness(result.readiness);
|
|
159
|
+
return;
|
|
160
|
+
}
|
|
83
161
|
if (!isInitResult(result)) {
|
|
84
162
|
console.log(typeof result === 'string' ? result : formatOutput(result));
|
|
85
163
|
return;
|
|
@@ -95,9 +173,9 @@ export function printInitResult(result, format) {
|
|
|
95
173
|
? '✓ Login stored in the OS credential store; no long-lived key was written to this repository.'
|
|
96
174
|
: '⚠ Login kept in memory for this process only.');
|
|
97
175
|
}
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
176
|
+
// 이 경로는 setup용 agent key를 애초에 발급하지 않는다. "발급했다가 폐기했다"는
|
|
177
|
+
// 이전 안내 줄은 그래서 사라졌다.
|
|
178
|
+
console.log('✓ No agent API key was created for this setup.');
|
|
101
179
|
}
|
|
102
180
|
// The compatibility path has a hard 30-day server-side TTL and no renewal of its own.
|
|
103
181
|
// Saying so here is the difference between a planned reissue and a runner that starts
|
|
@@ -112,6 +190,9 @@ export function printInitResult(result, format) {
|
|
|
112
190
|
console.log(`✓ Config saved: ${result.configPath}`);
|
|
113
191
|
console.log(`✓ Convention saved: ${result.conventionPath}`);
|
|
114
192
|
console.log(`✓ Conventions synced to .agentteams/`);
|
|
193
|
+
if (result.readiness) {
|
|
194
|
+
printReadiness(result.readiness);
|
|
195
|
+
}
|
|
115
196
|
const hook = result.postCheckoutHook;
|
|
116
197
|
if (hook) {
|
|
117
198
|
if (hook.status === 'ready') {
|
|
@@ -122,20 +203,21 @@ export function printInitResult(result, format) {
|
|
|
122
203
|
console.warn(` New worktrees will need 'agentteams init' run manually.`);
|
|
123
204
|
}
|
|
124
205
|
}
|
|
125
|
-
|
|
126
|
-
for (const file of result.agentFiles) {
|
|
127
|
-
if (file.type === 'created') {
|
|
128
|
-
console.log(`✓ Agent file created: ${file.relativePath}`);
|
|
129
|
-
}
|
|
130
|
-
else {
|
|
131
|
-
console.log(`✓ Example file created: ${file.relativePath}`);
|
|
132
|
-
}
|
|
133
|
-
}
|
|
134
|
-
}
|
|
206
|
+
printAgentFiles(result.agentFiles);
|
|
135
207
|
console.log('');
|
|
136
208
|
console.log('Next steps:');
|
|
137
|
-
|
|
138
|
-
|
|
209
|
+
// Pointing at "the generated agent files" when the run generated none sent
|
|
210
|
+
// users looking for a CLAUDE.md that was never written. The readiness list
|
|
211
|
+
// above already says why it was skipped; this line offers the way to get one.
|
|
212
|
+
const writtenAgentFiles = (result.agentFiles ?? []).filter((file) => file.type !== 'skipped');
|
|
213
|
+
if (writtenAgentFiles.length > 0) {
|
|
214
|
+
console.log(` 1. Check the generated agent files (${writtenAgentFiles.map((f) => f.relativePath).join(', ')})`);
|
|
215
|
+
console.log(' If a -example file was created, merge it into your existing file.');
|
|
216
|
+
}
|
|
217
|
+
else {
|
|
218
|
+
console.log(' 1. No agent entry point file was created in this run.');
|
|
219
|
+
console.log(" Create one with 'agentteams init --agent-files CLAUDE.md' so agents load .agentteams/convention.md.");
|
|
220
|
+
}
|
|
139
221
|
if (result.seedPlanId) {
|
|
140
222
|
const seedPlanDisplayId = `agentteams_pln_${result.seedPlanId}`;
|
|
141
223
|
console.log(' 2. A "Set Up Project Conventions" plan is queued for this project.');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"initOutput.js","sourceRoot":"","sources":["../../src/utils/initOutput.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"initOutput.js","sourceRoot":"","sources":["../../src/utils/initOutput.ts"],"names":[],"mappings":"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"}
|