@agents-ensemble/core 0.3.0 → 0.3.2
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/profile/index.d.ts +3 -1
- package/dist/profile/index.d.ts.map +1 -1
- package/dist/profile/index.js +1 -0
- package/dist/profile/index.js.map +1 -1
- package/dist/profile/load-profile.d.ts +2 -0
- package/dist/profile/load-profile.d.ts.map +1 -1
- package/dist/profile/load-profile.js +14 -2
- package/dist/profile/load-profile.js.map +1 -1
- package/dist/profile/resolve-worker-workspace.d.ts +1 -0
- package/dist/profile/resolve-worker-workspace.d.ts.map +1 -1
- package/dist/profile/resolve-worker-workspace.js +18 -6
- package/dist/profile/resolve-worker-workspace.js.map +1 -1
- package/dist/profile/team-profile-resolution.d.ts +4 -0
- package/dist/profile/team-profile-resolution.d.ts.map +1 -1
- package/dist/profile/team-profile-resolution.js +22 -3
- package/dist/profile/team-profile-resolution.js.map +1 -1
- package/dist/profile/validate-team-profile-workspaces.d.ts +23 -0
- package/dist/profile/validate-team-profile-workspaces.d.ts.map +1 -0
- package/dist/profile/validate-team-profile-workspaces.js +57 -0
- package/dist/profile/validate-team-profile-workspaces.js.map +1 -0
- package/dist/profiles/implementer-and-reviewer/team.md +9 -4
- package/package.json +1 -1
package/dist/profile/index.d.ts
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
export { loadProfile, loadProfileFromFile, parseProfile, resolveProfileRef, resolveProfilePath, resolveProfile, resolveProfileFilePath, resolveDefaultProfilePath, ENSEMBLE_DEFAULT_PROFILE_ENV, profileDirectoryPath, corePackageRoot, bundledProfilesRoot, bundledProfilePath, bundledDefaultProfilePath, PROFILES_DIR, PROFILE_FILE, DEFAULT_PROFILE_NAME, DEFAULT_PROFILE_ALIAS, ENSEMBLE_DIR, TEAMS_DIR, teamProfileRoots, resolveTeamProfilePath, listTeamProfiles, normalizeTeamProfileName, teamProfileId, } from './load-profile.js';
|
|
2
2
|
export type { Profile, ProfileMaterial, ProfileMeta, ResolvedProfile, AgentDefinition, ProfileWorkerEntry, ProfileWorkerRef, SessionWorkerSpec, EnsembleSessionState, } from './types.js';
|
|
3
|
-
export type { TeamProfileSource, TeamProfileMeta, TeamProfileListEntry, TeamProfileRoot, TeamProfileResolutionOptions, } from './team-profile-resolution.js';
|
|
3
|
+
export type { TeamProfileSource, TeamProfileMeta, TeamProfileListEntry, TeamProfileRoot, TeamProfileResolutionOptions, TeamProfileAvailability, TeamProfileValidationIssue, } from './team-profile-resolution.js';
|
|
4
|
+
export { validateTeamProfileWorkspaces, assertTeamProfileWorkspacesAvailable, formatTeamProfileActivationError, } from './validate-team-profile-workspaces.js';
|
|
5
|
+
export type { TeamProfileWorkspaceValidation } from './validate-team-profile-workspaces.js';
|
|
4
6
|
export { profileWorkersToSessionSpecs, resolveAgentPromptModule, normalizeProfileWorker, normalizeProfileWorkers, sessionStateFromProfile, } from './types.js';
|
|
5
7
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/profile/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,mBAAmB,EACnB,YAAY,EACZ,iBAAiB,EACjB,kBAAkB,EAClB,cAAc,EACd,sBAAsB,EACtB,yBAAyB,EACzB,4BAA4B,EAC5B,oBAAoB,EACpB,eAAe,EACf,mBAAmB,EACnB,kBAAkB,EAClB,yBAAyB,EACzB,YAAY,EACZ,YAAY,EACZ,oBAAoB,EACpB,qBAAqB,EACrB,YAAY,EACZ,SAAS,EACT,gBAAgB,EAChB,sBAAsB,EACtB,gBAAgB,EAChB,wBAAwB,EACxB,aAAa,GACd,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EACV,OAAO,EACP,eAAe,EACf,WAAW,EACX,eAAe,EACf,eAAe,EACf,kBAAkB,EAClB,gBAAgB,EAChB,iBAAiB,EACjB,oBAAoB,GACrB,MAAM,YAAY,CAAC;AACpB,YAAY,EACV,iBAAiB,EACjB,eAAe,EACf,oBAAoB,EACpB,eAAe,EACf,4BAA4B,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/profile/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,mBAAmB,EACnB,YAAY,EACZ,iBAAiB,EACjB,kBAAkB,EAClB,cAAc,EACd,sBAAsB,EACtB,yBAAyB,EACzB,4BAA4B,EAC5B,oBAAoB,EACpB,eAAe,EACf,mBAAmB,EACnB,kBAAkB,EAClB,yBAAyB,EACzB,YAAY,EACZ,YAAY,EACZ,oBAAoB,EACpB,qBAAqB,EACrB,YAAY,EACZ,SAAS,EACT,gBAAgB,EAChB,sBAAsB,EACtB,gBAAgB,EAChB,wBAAwB,EACxB,aAAa,GACd,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EACV,OAAO,EACP,eAAe,EACf,WAAW,EACX,eAAe,EACf,eAAe,EACf,kBAAkB,EAClB,gBAAgB,EAChB,iBAAiB,EACjB,oBAAoB,GACrB,MAAM,YAAY,CAAC;AACpB,YAAY,EACV,iBAAiB,EACjB,eAAe,EACf,oBAAoB,EACpB,eAAe,EACf,4BAA4B,EAC5B,uBAAuB,EACvB,0BAA0B,GAC3B,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACL,6BAA6B,EAC7B,oCAAoC,EACpC,gCAAgC,GACjC,MAAM,uCAAuC,CAAC;AAC/C,YAAY,EAAE,8BAA8B,EAAE,MAAM,uCAAuC,CAAC;AAC5F,OAAO,EACL,4BAA4B,EAC5B,wBAAwB,EACxB,sBAAsB,EACtB,uBAAuB,EACvB,uBAAuB,GACxB,MAAM,YAAY,CAAC"}
|
package/dist/profile/index.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
1
|
export { loadProfile, loadProfileFromFile, parseProfile, resolveProfileRef, resolveProfilePath, resolveProfile, resolveProfileFilePath, resolveDefaultProfilePath, ENSEMBLE_DEFAULT_PROFILE_ENV, profileDirectoryPath, corePackageRoot, bundledProfilesRoot, bundledProfilePath, bundledDefaultProfilePath, PROFILES_DIR, PROFILE_FILE, DEFAULT_PROFILE_NAME, DEFAULT_PROFILE_ALIAS, ENSEMBLE_DIR, TEAMS_DIR, teamProfileRoots, resolveTeamProfilePath, listTeamProfiles, normalizeTeamProfileName, teamProfileId, } from './load-profile.js';
|
|
2
|
+
export { validateTeamProfileWorkspaces, assertTeamProfileWorkspacesAvailable, formatTeamProfileActivationError, } from './validate-team-profile-workspaces.js';
|
|
2
3
|
export { profileWorkersToSessionSpecs, resolveAgentPromptModule, normalizeProfileWorker, normalizeProfileWorkers, sessionStateFromProfile, } from './types.js';
|
|
3
4
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/profile/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,mBAAmB,EACnB,YAAY,EACZ,iBAAiB,EACjB,kBAAkB,EAClB,cAAc,EACd,sBAAsB,EACtB,yBAAyB,EACzB,4BAA4B,EAC5B,oBAAoB,EACpB,eAAe,EACf,mBAAmB,EACnB,kBAAkB,EAClB,yBAAyB,EACzB,YAAY,EACZ,YAAY,EACZ,oBAAoB,EACpB,qBAAqB,EACrB,YAAY,EACZ,SAAS,EACT,gBAAgB,EAChB,sBAAsB,EACtB,gBAAgB,EAChB,wBAAwB,EACxB,aAAa,GACd,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/profile/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,mBAAmB,EACnB,YAAY,EACZ,iBAAiB,EACjB,kBAAkB,EAClB,cAAc,EACd,sBAAsB,EACtB,yBAAyB,EACzB,4BAA4B,EAC5B,oBAAoB,EACpB,eAAe,EACf,mBAAmB,EACnB,kBAAkB,EAClB,yBAAyB,EACzB,YAAY,EACZ,YAAY,EACZ,oBAAoB,EACpB,qBAAqB,EACrB,YAAY,EACZ,SAAS,EACT,gBAAgB,EAChB,sBAAsB,EACtB,gBAAgB,EAChB,wBAAwB,EACxB,aAAa,GACd,MAAM,mBAAmB,CAAC;AAqB3B,OAAO,EACL,6BAA6B,EAC7B,oCAAoC,EACpC,gCAAgC,GACjC,MAAM,uCAAuC,CAAC;AAE/C,OAAO,EACL,4BAA4B,EAC5B,wBAAwB,EACxB,sBAAsB,EACtB,uBAAuB,EACvB,uBAAuB,GACxB,MAAM,YAAY,CAAC"}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import type { Profile, ResolvedProfile } from './types.js';
|
|
2
2
|
export { bundledDefaultProfilePath, bundledProfilePath, bundledProfilesRoot, corePackageRoot, DEFAULT_PROFILE_ALIAS, DEFAULT_PROFILE_NAME, ENSEMBLE_DIR, PROFILE_FILE, profileDirectoryPath, PROFILES_DIR, TEAMS_DIR, } from './profile-paths.js';
|
|
3
3
|
export { teamProfileRoots, resolveTeamProfilePath, listTeamProfiles, normalizeTeamProfileName, teamProfileId, } from './team-profile-resolution.js';
|
|
4
|
+
export { validateTeamProfileWorkspaces, assertTeamProfileWorkspacesAvailable, formatTeamProfileActivationError, } from './validate-team-profile-workspaces.js';
|
|
5
|
+
export type { TeamProfileAvailability, TeamProfileValidationIssue, TeamProfileWorkspaceValidation, } from './validate-team-profile-workspaces.js';
|
|
4
6
|
export declare function parseProfile(source: unknown, label: string): Profile;
|
|
5
7
|
export declare function resolveProfileFilePath(profileDir: string, fileRef: string): string;
|
|
6
8
|
/** `file` / `promptFile` を読み込み、インラインに解決する。 */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"load-profile.d.ts","sourceRoot":"","sources":["../../src/profile/load-profile.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAEV,OAAO,EAGP,eAAe,EAChB,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"load-profile.d.ts","sourceRoot":"","sources":["../../src/profile/load-profile.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAEV,OAAO,EAGP,eAAe,EAChB,MAAM,YAAY,CAAC;AAgBpB,OAAO,EACL,yBAAyB,EACzB,kBAAkB,EAClB,mBAAmB,EACnB,eAAe,EACf,qBAAqB,EACrB,oBAAoB,EACpB,YAAY,EACZ,YAAY,EACZ,oBAAoB,EACpB,YAAY,EACZ,SAAS,GACV,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,gBAAgB,EAChB,sBAAsB,EACtB,gBAAgB,EAChB,wBAAwB,EACxB,aAAa,GACd,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACL,6BAA6B,EAC7B,oCAAoC,EACpC,gCAAgC,GACjC,MAAM,uCAAuC,CAAC;AAC/C,YAAY,EACV,uBAAuB,EACvB,0BAA0B,EAC1B,8BAA8B,GAC/B,MAAM,uCAAuC,CAAC;AAe/C,wBAAgB,YAAY,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAyCpE;AAED,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAKlF;AAoED,8CAA8C;AAC9C,wBAAsB,cAAc,CAClC,OAAO,EAAE,OAAO,EAChB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,eAAe,CAAC,CAiB1B;AAED,wBAAsB,mBAAmB,CACvC,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,GAC9B,OAAO,CAAC,eAAe,CAAC,CAO1B;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAExE;AAED,8DAA8D;AAC9D,eAAO,MAAM,4BAA4B,6BAA6B,CAAC;AAEvE,qFAAqF;AACrF,wBAAgB,iBAAiB,CAAC,OAAO,EAAE;IACzC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;CACzB,GAAG,MAAM,GAAG,SAAS,CAMrB;AAED,0CAA0C;AAC1C,wBAAgB,yBAAyB,IAAI,MAAM,CAElD;AAED,wBAAsB,WAAW,CAAC,OAAO,EAAE;IACzC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;CACzB,GAAG,OAAO,CAAC;IAAE,OAAO,EAAE,eAAe,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,CAAC,CAiB7D"}
|
|
@@ -1,13 +1,24 @@
|
|
|
1
1
|
import { readFile } from 'node:fs/promises';
|
|
2
|
-
import { dirname, isAbsolute, join } from 'node:path';
|
|
2
|
+
import { basename, dirname, isAbsolute, join } from 'node:path';
|
|
3
3
|
import yaml from 'js-yaml';
|
|
4
4
|
import { parsePromptModuleFromYaml } from './parse-prompt-module.js';
|
|
5
5
|
import { resolveWorkerWorkspacePath } from './resolve-worker-workspace.js';
|
|
6
|
+
import { assertTeamProfileWorkspacesAvailable } from './validate-team-profile-workspaces.js';
|
|
6
7
|
import { normalizeProfileWorkers } from './types.js';
|
|
7
|
-
import { resolveTeamProfilePath } from './team-profile-resolution.js';
|
|
8
|
+
import { normalizeTeamProfileName, resolveTeamProfilePath, } from './team-profile-resolution.js';
|
|
8
9
|
import { bundledDefaultProfilePath, PROFILE_FILE, } from './profile-paths.js';
|
|
9
10
|
export { bundledDefaultProfilePath, bundledProfilePath, bundledProfilesRoot, corePackageRoot, DEFAULT_PROFILE_ALIAS, DEFAULT_PROFILE_NAME, ENSEMBLE_DIR, PROFILE_FILE, profileDirectoryPath, PROFILES_DIR, TEAMS_DIR, } from './profile-paths.js';
|
|
10
11
|
export { teamProfileRoots, resolveTeamProfilePath, listTeamProfiles, normalizeTeamProfileName, teamProfileId, } from './team-profile-resolution.js';
|
|
12
|
+
export { validateTeamProfileWorkspaces, assertTeamProfileWorkspacesAvailable, formatTeamProfileActivationError, } from './validate-team-profile-workspaces.js';
|
|
13
|
+
function teamProfileRefFromLoad(profilePath, profileRef) {
|
|
14
|
+
if (profileRef?.trim()) {
|
|
15
|
+
const trimmed = profileRef.trim();
|
|
16
|
+
if (!trimmed.includes('/') && !trimmed.endsWith('.yaml') && !trimmed.endsWith('.yml')) {
|
|
17
|
+
return normalizeTeamProfileName(trimmed);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
return basename(dirname(profilePath));
|
|
21
|
+
}
|
|
11
22
|
export function parseProfile(source, label) {
|
|
12
23
|
if (!source || typeof source !== 'object' || !Array.isArray(source.workers)) {
|
|
13
24
|
throw new Error(`Invalid profile: ${label} (expected YAML with "workers" array)`);
|
|
@@ -137,6 +148,7 @@ export async function loadProfile(options) {
|
|
|
137
148
|
? resolveProfilePath(ref, cwd)
|
|
138
149
|
: resolveDefaultProfilePath();
|
|
139
150
|
const profile = await loadProfileFromFile(profilePath, { repoRoot: cwd });
|
|
151
|
+
assertTeamProfileWorkspacesAvailable(profile, dirname(profilePath), cwd, teamProfileRefFromLoad(profilePath, ref));
|
|
140
152
|
return { profile, profilePath };
|
|
141
153
|
}
|
|
142
154
|
//# sourceMappingURL=load-profile.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"load-profile.js","sourceRoot":"","sources":["../../src/profile/load-profile.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"load-profile.js","sourceRoot":"","sources":["../../src/profile/load-profile.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolve-worker-workspace.d.ts","sourceRoot":"","sources":["../../src/profile/resolve-worker-workspace.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"resolve-worker-workspace.d.ts","sourceRoot":"","sources":["../../src/profile/resolve-worker-workspace.ts"],"names":[],"mappings":"AAcA;;;;;;GAMG;AACH,wBAAgB,0BAA0B,CACxC,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,GACf,MAAM,CASR;AAED,4CAA4C;AAC5C,wBAAgB,8BAA8B,CAC5C,IAAI,EAAE,MAAM,EACZ,UAAU,CAAC,EAAE,MAAM,GAClB,IAAI,CAkBN;AAED,uDAAuD;AACvD,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAW7E"}
|
|
@@ -1,19 +1,31 @@
|
|
|
1
1
|
import { statSync } from 'node:fs';
|
|
2
|
-
import {
|
|
2
|
+
import { homedir } from 'node:os';
|
|
3
|
+
import { isAbsolute, join, resolve } from 'node:path';
|
|
4
|
+
function expandTilde(path) {
|
|
5
|
+
if (path === '~') {
|
|
6
|
+
return homedir();
|
|
7
|
+
}
|
|
8
|
+
if (path.startsWith('~/') || path.startsWith('~\\')) {
|
|
9
|
+
return join(homedir(), path.slice(2));
|
|
10
|
+
}
|
|
11
|
+
return path;
|
|
12
|
+
}
|
|
3
13
|
/**
|
|
4
14
|
* profile の `workspace` を絶対パスへ解決する。
|
|
5
15
|
* - 絶対パスはそのまま
|
|
16
|
+
* - `~` / `~/` / `~\` は homedir() で展開
|
|
6
17
|
* - `./` / `../` で始まる相対パスは profile ディレクトリ基準
|
|
7
18
|
* - それ以外の相対パスは repo-root(`loadProfile` の cwd)基準
|
|
8
19
|
*/
|
|
9
20
|
export function resolveWorkerWorkspacePath(workspace, profileDir, repoRoot) {
|
|
10
|
-
|
|
11
|
-
|
|
21
|
+
const expanded = expandTilde(workspace);
|
|
22
|
+
if (isAbsolute(expanded)) {
|
|
23
|
+
return expanded;
|
|
12
24
|
}
|
|
13
|
-
if (
|
|
14
|
-
return resolve(profileDir,
|
|
25
|
+
if (expanded.startsWith('.')) {
|
|
26
|
+
return resolve(profileDir, expanded);
|
|
15
27
|
}
|
|
16
|
-
return resolve(repoRoot,
|
|
28
|
+
return resolve(repoRoot, expanded);
|
|
17
29
|
}
|
|
18
30
|
/** worker ACP cwd が存在するディレクトリであることを検証する。 */
|
|
19
31
|
export function assertWorkerWorkspaceDirectory(path, workerName) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolve-worker-workspace.js","sourceRoot":"","sources":["../../src/profile/resolve-worker-workspace.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACnC,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"resolve-worker-workspace.js","sourceRoot":"","sources":["../../src/profile/resolve-worker-workspace.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACnC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEtD,SAAS,WAAW,CAAC,IAAY;IAC/B,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;QACjB,OAAO,OAAO,EAAE,CAAC;IACnB,CAAC;IACD,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;QACpD,OAAO,IAAI,CAAC,OAAO,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACxC,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,0BAA0B,CACxC,SAAiB,EACjB,UAAkB,EAClB,QAAgB;IAEhB,MAAM,QAAQ,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC;IACxC,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QACzB,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,IAAI,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAC7B,OAAO,OAAO,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;IACvC,CAAC;IACD,OAAO,OAAO,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;AACrC,CAAC;AAED,4CAA4C;AAC5C,MAAM,UAAU,8BAA8B,CAC5C,IAAY,EACZ,UAAmB;IAEnB,MAAM,KAAK,GAAG,UAAU,CAAC,CAAC,CAAC,WAAW,UAAU,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC;IAC/D,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC5B,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;YACxB,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,kCAAkC,IAAI,EAAE,CAAC,CAAC;QACpE,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IACE,OAAO,KAAK,KAAK,QAAQ;YACzB,KAAK,KAAK,IAAI;YACd,MAAM,IAAI,KAAK;YACd,KAA+B,CAAC,IAAI,KAAK,QAAQ,EAClD,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,8BAA8B,IAAI,EAAE,CAAC,CAAC;QAChE,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED,uDAAuD;AACvD,MAAM,UAAU,sBAAsB,CAAC,IAAY,EAAE,QAAgB;IACnE,MAAM,cAAc,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IACzC,MAAM,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACrC,IACE,cAAc,KAAK,cAAc;QACjC,cAAc,CAAC,UAAU,CAAC,GAAG,cAAc,GAAG,CAAC,EAC/C,CAAC;QACD,MAAM,QAAQ,GAAG,cAAc,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAChF,OAAO,QAAQ,IAAI,GAAG,CAAC;IACzB,CAAC;IACD,OAAO,cAAc,CAAC;AACxB,CAAC"}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { type TeamProfileAvailability, type TeamProfileValidationIssue } from './validate-team-profile-workspaces.js';
|
|
2
|
+
export type { TeamProfileAvailability, TeamProfileValidationIssue } from './validate-team-profile-workspaces.js';
|
|
1
3
|
export type TeamProfileSource = 'project' | 'user' | 'bundled' | 'legacy';
|
|
2
4
|
export interface TeamProfileMeta {
|
|
3
5
|
id?: string;
|
|
@@ -15,6 +17,8 @@ export interface TeamProfileListEntry {
|
|
|
15
17
|
meta?: TeamProfileMeta;
|
|
16
18
|
/** Worker kind or name preview for catalog display. */
|
|
17
19
|
workersPreview: string[];
|
|
20
|
+
availability: TeamProfileAvailability;
|
|
21
|
+
issues?: TeamProfileValidationIssue[];
|
|
18
22
|
}
|
|
19
23
|
export interface TeamProfileRoot {
|
|
20
24
|
source: TeamProfileSource;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"team-profile-resolution.d.ts","sourceRoot":"","sources":["../../src/profile/team-profile-resolution.ts"],"names":[],"mappings":"AAkBA,MAAM,MAAM,iBAAiB,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,GAAG,QAAQ,CAAC;AAE1E,MAAM,WAAW,eAAe;IAC9B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,oBAAoB;IACnC,oDAAoD;IACpD,EAAE,EAAE,MAAM,CAAC;IACX,qEAAqE;IACrE,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,iBAAiB,CAAC;IAC1B,uCAAuC;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,eAAe,CAAC;IACvB,uDAAuD;IACvD,cAAc,EAAE,MAAM,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"team-profile-resolution.d.ts","sourceRoot":"","sources":["../../src/profile/team-profile-resolution.ts"],"names":[],"mappings":"AAkBA,OAAO,EAEL,KAAK,uBAAuB,EAC5B,KAAK,0BAA0B,EAChC,MAAM,uCAAuC,CAAC;AAE/C,YAAY,EAAE,uBAAuB,EAAE,0BAA0B,EAAE,MAAM,uCAAuC,CAAC;AAEjH,MAAM,MAAM,iBAAiB,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,GAAG,QAAQ,CAAC;AAE1E,MAAM,WAAW,eAAe;IAC9B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,oBAAoB;IACnC,oDAAoD;IACpD,EAAE,EAAE,MAAM,CAAC;IACX,qEAAqE;IACrE,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,iBAAiB,CAAC;IAC1B,uCAAuC;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,eAAe,CAAC;IACvB,uDAAuD;IACvD,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,YAAY,EAAE,uBAAuB,CAAC;IACtC,MAAM,CAAC,EAAE,0BAA0B,EAAE,CAAC;CACvC;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,iBAAiB,CAAC;IAC1B,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,EAAE,MAAM,CAAC;IACjB,qDAAqD;IACrD,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAkBD,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAK7D;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,iBAAiB,GAAG,MAAM,CAE7E;AAmED,sDAAsD;AACtD,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE,IAAI,CAAC,4BAA4B,EAAE,kBAAkB,CAAC,GAC/D,eAAe,EAAE,CAYnB;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CACpC,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,4BAA4B,GACpC,MAAM,CAMR;AAuFD,kEAAkE;AAClE,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,4BAA4B,GACpC,OAAO,CAAC,oBAAoB,EAAE,CAAC,CAYjC"}
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import { existsSync, readdirSync } from 'node:fs';
|
|
2
2
|
import { readFile } from 'node:fs/promises';
|
|
3
3
|
import { homedir } from 'node:os';
|
|
4
|
-
import { isAbsolute, join } from 'node:path';
|
|
4
|
+
import { dirname, isAbsolute, join } from 'node:path';
|
|
5
5
|
import yaml from 'js-yaml';
|
|
6
6
|
import { bundledProfilePath, bundledProfilesRoot, DEFAULT_PROFILE_ALIAS, DEFAULT_PROFILE_NAME, ENSEMBLE_DIR, PROFILE_FILE, profileDirectoryPath, PROFILES_DIR, TEAMS_DIR, } from './profile-paths.js';
|
|
7
|
+
import { normalizeProfileWorkers } from './types.js';
|
|
8
|
+
import { validateTeamProfileWorkspaces, } from './validate-team-profile-workspaces.js';
|
|
7
9
|
function userEnsembleRoot(options) {
|
|
8
10
|
return options.userEnsembleRoot ?? join(homedir(), ENSEMBLE_DIR);
|
|
9
11
|
}
|
|
@@ -124,7 +126,21 @@ async function readTeamProfileMeta(filePath, fallbackName) {
|
|
|
124
126
|
return { workersPreview: [] };
|
|
125
127
|
}
|
|
126
128
|
}
|
|
127
|
-
async function
|
|
129
|
+
async function readTeamProfileWorkspaceValidation(filePath, repoRoot) {
|
|
130
|
+
try {
|
|
131
|
+
const profileDir = dirname(filePath);
|
|
132
|
+
const raw = yaml.load(await readFile(filePath, 'utf8'));
|
|
133
|
+
if (!raw || !Array.isArray(raw.workers)) {
|
|
134
|
+
return { availability: 'available' };
|
|
135
|
+
}
|
|
136
|
+
const workers = normalizeProfileWorkers(raw.workers, filePath);
|
|
137
|
+
return validateTeamProfileWorkspaces({ workers }, profileDir, repoRoot);
|
|
138
|
+
}
|
|
139
|
+
catch {
|
|
140
|
+
return { availability: 'available' };
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
async function listProfilesInRoot(source, root, repoRoot, nameMapper) {
|
|
128
144
|
const entries = [];
|
|
129
145
|
for (const dirName of listTeamDirs(root)) {
|
|
130
146
|
const filePath = teamProfileFilePath(join(root, dirName));
|
|
@@ -133,6 +149,7 @@ async function listProfilesInRoot(source, root, nameMapper) {
|
|
|
133
149
|
}
|
|
134
150
|
const name = nameMapper ? nameMapper(dirName) : dirName;
|
|
135
151
|
const { meta, workersPreview } = await readTeamProfileMeta(filePath, name);
|
|
152
|
+
const validation = await readTeamProfileWorkspaceValidation(filePath, repoRoot);
|
|
136
153
|
entries.push({
|
|
137
154
|
id: teamProfileId(name, source),
|
|
138
155
|
name,
|
|
@@ -140,6 +157,8 @@ async function listProfilesInRoot(source, root, nameMapper) {
|
|
|
140
157
|
path: filePath,
|
|
141
158
|
meta,
|
|
142
159
|
workersPreview,
|
|
160
|
+
availability: validation.availability,
|
|
161
|
+
...(validation.issues ? { issues: validation.issues } : {}),
|
|
143
162
|
});
|
|
144
163
|
}
|
|
145
164
|
return entries;
|
|
@@ -148,7 +167,7 @@ async function listProfilesInRoot(source, root, nameMapper) {
|
|
|
148
167
|
export async function listTeamProfiles(options) {
|
|
149
168
|
const { repoRoot } = options;
|
|
150
169
|
const entries = [];
|
|
151
|
-
entries.push(...(await listProfilesInRoot('project', projectTeamsRoot(repoRoot))), ...(await listProfilesInRoot('user', userTeamsRoot(options))), ...(await listProfilesInRoot('bundled', bundledProfilesRoot())), ...(await listProfilesInRoot('legacy', legacyProfilesRoot(repoRoot))));
|
|
170
|
+
entries.push(...(await listProfilesInRoot('project', projectTeamsRoot(repoRoot), repoRoot)), ...(await listProfilesInRoot('user', userTeamsRoot(options), repoRoot)), ...(await listProfilesInRoot('bundled', bundledProfilesRoot(), repoRoot)), ...(await listProfilesInRoot('legacy', legacyProfilesRoot(repoRoot), repoRoot)));
|
|
152
171
|
return entries;
|
|
153
172
|
}
|
|
154
173
|
//# sourceMappingURL=team-profile-resolution.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"team-profile-resolution.js","sourceRoot":"","sources":["../../src/profile/team-profile-resolution.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"team-profile-resolution.js","sourceRoot":"","sources":["../../src/profile/team-profile-resolution.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { ProfileWorkerEntry } from './types.js';
|
|
2
|
+
export type TeamProfileAvailability = 'available' | 'unusable';
|
|
3
|
+
export interface TeamProfileValidationIssue {
|
|
4
|
+
worker: string;
|
|
5
|
+
kind: string;
|
|
6
|
+
workspace: string;
|
|
7
|
+
reason: 'missing' | 'not_directory';
|
|
8
|
+
message: string;
|
|
9
|
+
}
|
|
10
|
+
export interface TeamProfileWorkspaceValidation {
|
|
11
|
+
availability: TeamProfileAvailability;
|
|
12
|
+
issues?: TeamProfileValidationIssue[];
|
|
13
|
+
}
|
|
14
|
+
/** team profile の全 worker workspace を検証する。1 体でも不正なら profile 全体を unusable とする。 */
|
|
15
|
+
export declare function validateTeamProfileWorkspaces(profile: {
|
|
16
|
+
workers: ProfileWorkerEntry[];
|
|
17
|
+
}, profileDir: string, repoRoot: string): TeamProfileWorkspaceValidation;
|
|
18
|
+
export declare function formatTeamProfileActivationError(profileRef: string, issue: TeamProfileValidationIssue): string;
|
|
19
|
+
/** unusable な profile の activate / 起動を拒否する。`loadProfile` と将来の `select_profile`(#174)が使う。 */
|
|
20
|
+
export declare function assertTeamProfileWorkspacesAvailable(profile: {
|
|
21
|
+
workers: ProfileWorkerEntry[];
|
|
22
|
+
}, profileDir: string, repoRoot: string, profileRef: string): void;
|
|
23
|
+
//# sourceMappingURL=validate-team-profile-workspaces.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate-team-profile-workspaces.d.ts","sourceRoot":"","sources":["../../src/profile/validate-team-profile-workspaces.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAMrD,MAAM,MAAM,uBAAuB,GAAG,WAAW,GAAG,UAAU,CAAC;AAE/D,MAAM,WAAW,0BAA0B;IACzC,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,SAAS,GAAG,eAAe,CAAC;IACpC,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,8BAA8B;IAC7C,YAAY,EAAE,uBAAuB,CAAC;IACtC,MAAM,CAAC,EAAE,0BAA0B,EAAE,CAAC;CACvC;AA6BD,iFAAiF;AACjF,wBAAgB,6BAA6B,CAC3C,OAAO,EAAE;IAAE,OAAO,EAAE,kBAAkB,EAAE,CAAA;CAAE,EAC1C,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,GACf,8BAA8B,CAuBhC;AAED,wBAAgB,gCAAgC,CAC9C,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,0BAA0B,GAChC,MAAM,CAGR;AAED,4FAA4F;AAC5F,wBAAgB,oCAAoC,CAClD,OAAO,EAAE;IAAE,OAAO,EAAE,kBAAkB,EAAE,CAAA;CAAE,EAC1C,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,GACjB,IAAI,CAYN"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { assertWorkerWorkspaceDirectory, resolveWorkerWorkspacePath, } from './resolve-worker-workspace.js';
|
|
2
|
+
function checkWorkerWorkspaceDirectory(path, workerName, kind) {
|
|
3
|
+
try {
|
|
4
|
+
assertWorkerWorkspaceDirectory(path, workerName);
|
|
5
|
+
return undefined;
|
|
6
|
+
}
|
|
7
|
+
catch (error) {
|
|
8
|
+
if (!(error instanceof Error)) {
|
|
9
|
+
throw error;
|
|
10
|
+
}
|
|
11
|
+
const reason = error.message.includes('not a directory')
|
|
12
|
+
? 'not_directory'
|
|
13
|
+
: 'missing';
|
|
14
|
+
return {
|
|
15
|
+
worker: workerName,
|
|
16
|
+
kind,
|
|
17
|
+
workspace: path,
|
|
18
|
+
reason,
|
|
19
|
+
message: error.message,
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
/** team profile の全 worker workspace を検証する。1 体でも不正なら profile 全体を unusable とする。 */
|
|
24
|
+
export function validateTeamProfileWorkspaces(profile, profileDir, repoRoot) {
|
|
25
|
+
const issues = [];
|
|
26
|
+
for (const worker of profile.workers) {
|
|
27
|
+
if (!worker.workspace) {
|
|
28
|
+
continue;
|
|
29
|
+
}
|
|
30
|
+
const resolvedPath = resolveWorkerWorkspacePath(worker.workspace, profileDir, repoRoot);
|
|
31
|
+
const issue = checkWorkerWorkspaceDirectory(resolvedPath, worker.name, worker.kind);
|
|
32
|
+
if (issue) {
|
|
33
|
+
issues.push(issue);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
if (issues.length === 0) {
|
|
37
|
+
return { availability: 'available' };
|
|
38
|
+
}
|
|
39
|
+
return { availability: 'unusable', issues };
|
|
40
|
+
}
|
|
41
|
+
export function formatTeamProfileActivationError(profileRef, issue) {
|
|
42
|
+
const workerPart = issue.message.replace(/^Worker /, 'worker ');
|
|
43
|
+
return `Cannot use team profile "${profileRef}": ${workerPart}`;
|
|
44
|
+
}
|
|
45
|
+
/** unusable な profile の activate / 起動を拒否する。`loadProfile` と将来の `select_profile`(#174)が使う。 */
|
|
46
|
+
export function assertTeamProfileWorkspacesAvailable(profile, profileDir, repoRoot, profileRef) {
|
|
47
|
+
const validation = validateTeamProfileWorkspaces(profile, profileDir, repoRoot);
|
|
48
|
+
if (validation.availability === 'available') {
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
const issue = validation.issues?.[0];
|
|
52
|
+
if (!issue) {
|
|
53
|
+
throw new Error(`Cannot use team profile "${profileRef}": workspace validation failed`);
|
|
54
|
+
}
|
|
55
|
+
throw new Error(formatTeamProfileActivationError(profileRef, issue));
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=validate-team-profile-workspaces.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate-team-profile-workspaces.js","sourceRoot":"","sources":["../../src/profile/validate-team-profile-workspaces.ts"],"names":[],"mappings":"AACA,OAAO,EACL,8BAA8B,EAC9B,0BAA0B,GAC3B,MAAM,+BAA+B,CAAC;AAiBvC,SAAS,6BAA6B,CACpC,IAAY,EACZ,UAAkB,EAClB,IAAY;IAEZ,IAAI,CAAC;QACH,8BAA8B,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QACjD,OAAO,SAAS,CAAC;IACnB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,CAAC,CAAC,KAAK,YAAY,KAAK,CAAC,EAAE,CAAC;YAC9B,MAAM,KAAK,CAAC;QACd,CAAC;QACD,MAAM,MAAM,GAAyC,KAAK,CAAC,OAAO,CAAC,QAAQ,CACzE,iBAAiB,CAClB;YACC,CAAC,CAAC,eAAe;YACjB,CAAC,CAAC,SAAS,CAAC;QACd,OAAO;YACL,MAAM,EAAE,UAAU;YAClB,IAAI;YACJ,SAAS,EAAE,IAAI;YACf,MAAM;YACN,OAAO,EAAE,KAAK,CAAC,OAAO;SACvB,CAAC;IACJ,CAAC;AACH,CAAC;AAED,iFAAiF;AACjF,MAAM,UAAU,6BAA6B,CAC3C,OAA0C,EAC1C,UAAkB,EAClB,QAAgB;IAEhB,MAAM,MAAM,GAAiC,EAAE,CAAC;IAEhD,KAAK,MAAM,MAAM,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QACrC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;YACtB,SAAS;QACX,CAAC;QACD,MAAM,YAAY,GAAG,0BAA0B,CAC7C,MAAM,CAAC,SAAS,EAChB,UAAU,EACV,QAAQ,CACT,CAAC;QACF,MAAM,KAAK,GAAG,6BAA6B,CAAC,YAAY,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;QACpF,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACrB,CAAC;IACH,CAAC;IAED,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,CAAC;IACvC,CAAC;IAED,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC;AAC9C,CAAC;AAED,MAAM,UAAU,gCAAgC,CAC9C,UAAkB,EAClB,KAAiC;IAEjC,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;IAChE,OAAO,4BAA4B,UAAU,MAAM,UAAU,EAAE,CAAC;AAClE,CAAC;AAED,4FAA4F;AAC5F,MAAM,UAAU,oCAAoC,CAClD,OAA0C,EAC1C,UAAkB,EAClB,QAAgB,EAChB,UAAkB;IAElB,MAAM,UAAU,GAAG,6BAA6B,CAAC,OAAO,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;IAChF,IAAI,UAAU,CAAC,YAAY,KAAK,WAAW,EAAE,CAAC;QAC5C,OAAO;IACT,CAAC;IAED,MAAM,KAAK,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;IACrC,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,4BAA4B,UAAU,gCAAgC,CAAC,CAAC;IAC1F,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC;AACvE,CAAC"}
|
|
@@ -105,6 +105,7 @@ worker は、スコープ外・破壊的・環境に触る操作の許可を con
|
|
|
105
105
|
| 方針転換・Issue の目標そのものへの疑義 | 手順や Skill に書いてあること |
|
|
106
106
|
| スコープ外・破壊的な操作の許可 | 受け入れ条件から機械的に決まること |
|
|
107
107
|
| レビュー水準の合否が割れたまま解決しないもの | implementer / reviewer に聞けば済むこと |
|
|
108
|
+
| システム外との境界の仕様変更 | 内部仕様は概ね自由 |
|
|
108
109
|
| マージ判断(多くのケース) | |
|
|
109
110
|
|
|
110
111
|
出し方: **何が決まらないと進めないのか / 選択肢とそれぞれの帰結 / conductor の推奨**。質問は残して待ち、憶測で進めない。
|
|
@@ -118,11 +119,15 @@ worker は、スコープ外・破壊的・環境に触る操作の許可を con
|
|
|
118
119
|
- 未回答の質問を放置したまま自律ターンを重ねる
|
|
119
120
|
- worker の報告をそのまま信じる(**approve も入力の一つ**)
|
|
120
121
|
|
|
121
|
-
###
|
|
122
|
+
### 終了の判断と終わり方
|
|
122
123
|
|
|
123
|
-
-
|
|
124
|
-
-
|
|
125
|
-
-
|
|
124
|
+
- Issueの目的をPRが達成できている。受け入れ条件を満たし、reviewer が根拠つきで approve し、人間がマージするだけになっている
|
|
125
|
+
- → 短く簡潔にPRで行った作業をまとめて引き継ぎとする(マージの最終判断は人間)
|
|
126
|
+
- → 自律的な進行を止め、待機に入る
|
|
127
|
+
- 判断待ちがある
|
|
128
|
+
- → 質問を残して待つ
|
|
129
|
+
- 進めないまま同じことを繰り返しそうなとき
|
|
130
|
+
- → 止めて人間に状況を渡す
|
|
126
131
|
|
|
127
132
|
---
|
|
128
133
|
|