@agents-ensemble/core 0.16.0 → 0.17.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/acp/acp-client.d.ts +2 -0
- package/dist/acp/acp-client.d.ts.map +1 -1
- package/dist/acp/acp-client.js +2 -0
- package/dist/acp/acp-client.js.map +1 -1
- package/dist/acp/resolve-acp-spawn.d.ts +12 -1
- package/dist/acp/resolve-acp-spawn.d.ts.map +1 -1
- package/dist/acp/resolve-acp-spawn.js +76 -4
- package/dist/acp/resolve-acp-spawn.js.map +1 -1
- package/dist/acp/testing/fake-acp-server.d.ts +6 -0
- package/dist/acp/testing/fake-acp-server.d.ts.map +1 -1
- package/dist/acp/testing/fake-acp-server.js +4 -1
- package/dist/acp/testing/fake-acp-server.js.map +1 -1
- package/dist/conductor/conductor-session.d.ts +1 -1
- package/dist/conductor/conductor-session.d.ts.map +1 -1
- package/dist/conductor/conductor-session.js +79 -23
- package/dist/conductor/conductor-session.js.map +1 -1
- package/dist/config/index.d.ts +1 -1
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/parse-config.d.ts.map +1 -1
- package/dist/config/parse-config.js +39 -1
- package/dist/config/parse-config.js.map +1 -1
- package/dist/config/types.d.ts +7 -1
- package/dist/config/types.d.ts.map +1 -1
- package/dist/ensemble-paths.d.ts +7 -0
- package/dist/ensemble-paths.d.ts.map +1 -1
- package/dist/ensemble-paths.js +27 -1
- package/dist/ensemble-paths.js.map +1 -1
- package/dist/operator-runtime.d.ts +1 -1
- package/dist/operator-runtime.d.ts.map +1 -1
- package/dist/operator-runtime.js +1 -1
- package/dist/operator-runtime.js.map +1 -1
- package/dist/profile/types.d.ts +7 -1
- package/dist/profile/types.d.ts.map +1 -1
- package/dist/profile/types.js +34 -13
- package/dist/profile/types.js.map +1 -1
- package/dist/profiles/implementer-and-reviewer-v2/profile.yaml +2 -0
- package/dist/session/index.d.ts +2 -2
- package/dist/session/index.d.ts.map +1 -1
- package/dist/session/index.js +1 -1
- package/dist/session/index.js.map +1 -1
- package/dist/session/open-questions-store.d.ts +3 -0
- package/dist/session/open-questions-store.d.ts.map +1 -1
- package/dist/session/open-questions-store.js +8 -1
- package/dist/session/open-questions-store.js.map +1 -1
- package/dist/session/session-resume-store.d.ts +30 -1
- package/dist/session/session-resume-store.d.ts.map +1 -1
- package/dist/session/session-resume-store.js +162 -22
- package/dist/session/session-resume-store.js.map +1 -1
- package/dist/session/session-state-store.d.ts +4 -1
- package/dist/session/session-state-store.d.ts.map +1 -1
- package/dist/session/session-state-store.js +18 -4
- package/dist/session/session-state-store.js.map +1 -1
- package/package.json +2 -2
package/dist/profile/types.d.ts
CHANGED
|
@@ -2,6 +2,7 @@ import type { PromptModule } from '@modular-prompt/core';
|
|
|
2
2
|
import type { ConductorBackend } from '../config/types.js';
|
|
3
3
|
import type { AcpSpawnFingerprint, DefaultAcpResolutionOptions } from '../acp/resolve-acp-spawn.js';
|
|
4
4
|
import type { SpawnAcpProcessOptions } from '../acp/acp-process.js';
|
|
5
|
+
import type { AcpModelTag } from '../config/types.js';
|
|
5
6
|
/** kind ごとの agent 定義(modular-prompt 拡張)。`conductor` は暗黙起動の SDK agent、他は worker init prompt 用。 */
|
|
6
7
|
export interface AgentDefinition {
|
|
7
8
|
/** インライン modular-prompt YAML。`promptFile` と排他。 */
|
|
@@ -26,6 +27,8 @@ export interface ProfileWorkerRefObject {
|
|
|
26
27
|
/** セッション内の識別名(一意)。省略時は kind と同じ。 */
|
|
27
28
|
name?: string;
|
|
28
29
|
kind: string;
|
|
30
|
+
/** ACP model tier. Defaults to `default`. */
|
|
31
|
+
modelTag?: AcpModelTag;
|
|
29
32
|
/**
|
|
30
33
|
* その worker の ACP 起動 cwd(Issue worktree とは別概念)。
|
|
31
34
|
* profile ディレクトリまたは repo-root 基準の相対パス、または絶対パス。
|
|
@@ -36,6 +39,8 @@ export interface ProfileWorkerRefObject {
|
|
|
36
39
|
export interface ProfileWorkerEntry {
|
|
37
40
|
name: string;
|
|
38
41
|
kind: string;
|
|
42
|
+
/** ACP model tier selected by this worker instance. */
|
|
43
|
+
modelTag?: AcpModelTag;
|
|
39
44
|
/** profile YAML の raw 値。 */
|
|
40
45
|
workspace?: string;
|
|
41
46
|
/** `loadProfile` 後に解決された絶対パス。 */
|
|
@@ -91,6 +96,7 @@ export interface ResolvedProfile extends Omit<Profile, 'agents'> {
|
|
|
91
96
|
export interface SessionWorkerSpec {
|
|
92
97
|
name: string;
|
|
93
98
|
kind: string;
|
|
99
|
+
modelTag: AcpModelTag;
|
|
94
100
|
prompt?: PromptModule;
|
|
95
101
|
resolvedWorkspacePath?: string;
|
|
96
102
|
/** worker attach 時の ACP spawn オプション(command/args/env)。 */
|
|
@@ -104,7 +110,7 @@ export interface EnsembleSessionState {
|
|
|
104
110
|
kinds: string[];
|
|
105
111
|
materials?: ResolvedProfileMaterial[];
|
|
106
112
|
}
|
|
107
|
-
export declare const PROFILE_ACP_REMOVED_ERROR = "\"acp\" is removed from team profile; use .ensemble/config.yaml acp.defaultPreset and acp.env";
|
|
113
|
+
export declare const PROFILE_ACP_REMOVED_ERROR = "\"acp\" is removed from team profile; use .ensemble/config.yaml acp.defaultPreset and acp.env (worker model tiers use modelTag)";
|
|
108
114
|
export declare function resolvedProfileMaterials(materials?: ProfileMaterial[]): ResolvedProfileMaterial[] | undefined;
|
|
109
115
|
/** agent kind に応じて Prepared Materials を絞り込む。`kinds` 省略は全員向け。 */
|
|
110
116
|
export declare function filterMaterialsForKind(materials: ResolvedProfileMaterial[] | undefined, kind: string): ResolvedProfileMaterial[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/profile/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,KAAK,EACV,mBAAmB,EACnB,2BAA2B,EAC5B,MAAM,6BAA6B,CAAC;AACrC,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/profile/types.ts"],"names":[],"mappings":"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"}
|
package/dist/profile/types.js
CHANGED
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
import { acpSpawnFingerprint, resolveWorkerAcpSpawn, resolvedAcpSpawnToOptions, } from '../acp/resolve-acp-spawn.js';
|
|
2
|
-
export const PROFILE_ACP_REMOVED_ERROR = '"acp" is removed from team profile; use .ensemble/config.yaml acp.defaultPreset and acp.env';
|
|
2
|
+
export const PROFILE_ACP_REMOVED_ERROR = '"acp" is removed from team profile; use .ensemble/config.yaml acp.defaultPreset and acp.env (worker model tiers use modelTag)';
|
|
3
|
+
const PROFILE_MODEL_TAGS = [
|
|
4
|
+
'high',
|
|
5
|
+
'default',
|
|
6
|
+
'low',
|
|
7
|
+
'fast',
|
|
8
|
+
];
|
|
3
9
|
export function resolvedProfileMaterials(materials) {
|
|
4
10
|
const resolved = (materials ?? []).flatMap((material, index) => {
|
|
5
11
|
const content = material.content?.trim();
|
|
@@ -47,15 +53,23 @@ export function normalizeProfileWorker(entry, label, index) {
|
|
|
47
53
|
if (worker.acp !== undefined) {
|
|
48
54
|
throw new Error(`Invalid profile worker[${index}] in ${label}: ${PROFILE_ACP_REMOVED_ERROR}`);
|
|
49
55
|
}
|
|
56
|
+
const modelTag = worker.modelTag === undefined ? 'default' : worker.modelTag;
|
|
57
|
+
if (typeof modelTag !== 'string' ||
|
|
58
|
+
!PROFILE_MODEL_TAGS.includes(modelTag)) {
|
|
59
|
+
throw new Error(`Invalid profile worker[${index}] in ${label}: "modelTag" must be one of ${PROFILE_MODEL_TAGS.join(' | ')}`);
|
|
60
|
+
}
|
|
50
61
|
return {
|
|
51
62
|
name: worker.name ?? worker.kind,
|
|
52
63
|
kind: worker.kind,
|
|
64
|
+
...(worker.modelTag !== undefined
|
|
65
|
+
? { modelTag: modelTag }
|
|
66
|
+
: {}),
|
|
53
67
|
...(typeof worker.workspace === 'string' && worker.workspace.length > 0
|
|
54
68
|
? { workspace: worker.workspace }
|
|
55
69
|
: {}),
|
|
56
70
|
};
|
|
57
71
|
}
|
|
58
|
-
throw new Error(`Invalid profile worker[${index}] in ${label}: expected kind string or { name?, kind, workspace? }`);
|
|
72
|
+
throw new Error(`Invalid profile worker[${index}] in ${label}: expected kind string or { name?, kind, modelTag?, workspace? }`);
|
|
59
73
|
}
|
|
60
74
|
export function normalizeProfileWorkers(workers, label) {
|
|
61
75
|
const normalized = workers.map((entry, index) => normalizeProfileWorker(entry, label, index));
|
|
@@ -69,17 +83,24 @@ export function normalizeProfileWorkers(workers, label) {
|
|
|
69
83
|
return normalized;
|
|
70
84
|
}
|
|
71
85
|
export function profileWorkersToSessionSpecs(profile, options) {
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
:
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
86
|
+
return profile.workers.map((worker) => {
|
|
87
|
+
const modelTag = worker.modelTag ?? 'default';
|
|
88
|
+
const resolved = resolveWorkerAcpSpawn({
|
|
89
|
+
defaultOptions: options?.defaultAcp,
|
|
90
|
+
modelTag,
|
|
91
|
+
});
|
|
92
|
+
return {
|
|
93
|
+
name: worker.name,
|
|
94
|
+
kind: worker.kind,
|
|
95
|
+
modelTag,
|
|
96
|
+
prompt: resolveAgentPromptModule(worker.kind, profile.agents),
|
|
97
|
+
...(worker.resolvedWorkspacePath
|
|
98
|
+
? { resolvedWorkspacePath: worker.resolvedWorkspacePath }
|
|
99
|
+
: {}),
|
|
100
|
+
spawn: resolvedAcpSpawnToOptions(resolved, options?.spawnBase),
|
|
101
|
+
acpFingerprint: acpSpawnFingerprint(resolved),
|
|
102
|
+
};
|
|
103
|
+
});
|
|
83
104
|
}
|
|
84
105
|
/** kind に対応する profile agent module。agents[kind] → agents.default → undefined。 */
|
|
85
106
|
export function resolveAgentPromptModule(kind, agents) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/profile/types.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/profile/types.ts"],"names":[],"mappings":"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"}
|
package/dist/session/index.d.ts
CHANGED
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
export { SESSION_SIDECAR_VERSION, assertSessionSidecarMatches, findLatestSessionSidecarForIssue, listSessionSidecars, loadSessionSidecar, requireSessionSidecarForResume, saveSessionSidecar, sessionSidecarDir, sessionSidecarPath, SessionSidecarNotFoundError, } from './session-resume-store.js';
|
|
3
3
|
/** @deprecated Use SessionResumeStore; supported for one release only. */
|
|
4
4
|
export type { FindLatestSessionSidecarInput, SessionSidecar, SessionSidecarPathOptions, WorkerSessionSidecar, } from './session-resume-store.js';
|
|
5
|
-
export { SESSION_RESUME_STORE_VERSION, assertSessionResumeStoreMatches, findLatestSessionResumeStoreForIssue, harnessPhaseFromLegacyLifecycle, listSessionResumeStores, loadSessionResumeStore, requireSessionResumeStoreForResume, saveSessionResumeStore, sessionResumeStoreDir, sessionResumeStorePath, SessionResumeStoreNotFoundError, } from './session-resume-store.js';
|
|
6
|
-
export type { FindLatestSessionResumeStoreInput, HarnessPhase, SessionLifecycle, SessionResumeStore, WorkerSessionResumeStore, } from './session-resume-store.js';
|
|
5
|
+
export { SESSION_RESUME_STORE_VERSION, assertSessionResumeStoreMatches, findLatestSessionResumeStoreForIssue, findSessionResumeStore, harnessPhaseFromLegacyLifecycle, listLocatedSessionResumeStores, listSessionResumeStores, loadSessionResumeStore, requireLocatedSessionResumeStoreForResume, requireSessionResumeStoreForResume, saveSessionResumeStore, sessionResumeStoreDir, sessionResumeStorePath, SessionResumeStoreNotFoundError, } from './session-resume-store.js';
|
|
6
|
+
export type { FindLatestSessionResumeStoreInput, HarnessPhase, LocatedSessionResumeStore, SessionLifecycle, SessionResumeStoreDuplicateDiagnostic, SessionResumeStoreLocation, SessionResumeStore, WorkerSessionResumeStore, } from './session-resume-store.js';
|
|
7
7
|
export { loadOpenQuestionsStore, legacyOpenQuestionsStorePath, OPEN_QUESTIONS_STORE_VERSION, openQuestionsStorePath, saveOpenQuestionsStore, } from './open-questions-store.js';
|
|
8
8
|
export type { OpenQuestionsStoreDocument } from './open-questions-store.js';
|
|
9
9
|
export { CONDUCTOR_MESSAGE_HISTORY_MAX_ENTRIES, CONDUCTOR_MESSAGE_PAGE_DEFAULT_LIMIT, CONDUCTOR_MESSAGE_PAGE_MAX_LIMIT, OPEN_QUESTION_CONTROL_METHODS, OpenQuestionControlOperationError, OpenQuestionControlRemoteError, OpenQuestionControlTransportError, sendOpenQuestionControlRequest, startOpenQuestionControlServer, } from './open-question-control.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/session/index.ts"],"names":[],"mappings":"AAAA,sFAAsF;AACtF,OAAO,EACL,uBAAuB,EACvB,2BAA2B,EAC3B,gCAAgC,EAChC,mBAAmB,EACnB,kBAAkB,EAClB,8BAA8B,EAC9B,kBAAkB,EAClB,iBAAiB,EACjB,kBAAkB,EAClB,2BAA2B,GAC5B,MAAM,2BAA2B,CAAC;AACnC,0EAA0E;AAC1E,YAAY,EACV,6BAA6B,EAC7B,cAAc,EACd,yBAAyB,EACzB,oBAAoB,GACrB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,4BAA4B,EAC5B,+BAA+B,EAC/B,oCAAoC,EACpC,+BAA+B,EAC/B,uBAAuB,EACvB,sBAAsB,EACtB,kCAAkC,EAClC,sBAAsB,EACtB,qBAAqB,EACrB,sBAAsB,EACtB,+BAA+B,GAChC,MAAM,2BAA2B,CAAC;AACnC,YAAY,EACV,iCAAiC,EACjC,YAAY,EACZ,gBAAgB,EAChB,kBAAkB,EAClB,wBAAwB,GACzB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,sBAAsB,EACtB,4BAA4B,EAC5B,4BAA4B,EAC5B,sBAAsB,EACtB,sBAAsB,GACvB,MAAM,2BAA2B,CAAC;AACnC,YAAY,EAAE,0BAA0B,EAAE,MAAM,2BAA2B,CAAC;AAC5E,OAAO,EACL,qCAAqC,EACrC,oCAAoC,EACpC,gCAAgC,EAChC,6BAA6B,EAC7B,iCAAiC,EACjC,8BAA8B,EAC9B,iCAAiC,EACjC,8BAA8B,EAC9B,8BAA8B,GAC/B,MAAM,4BAA4B,CAAC;AACpC,YAAY,EACV,+BAA+B,EAC/B,yBAAyB,EACzB,mCAAmC,EACnC,yCAAyC,EACzC,0CAA0C,EAC1C,4BAA4B,EAC5B,uCAAuC,EACvC,2BAA2B,EAC3B,kCAAkC,EAClC,kCAAkC,EAClC,yBAAyB,EACzB,gCAAgC,EAChC,0BAA0B,GAC3B,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,qBAAqB,EACrB,2BAA2B,EAC3B,qBAAqB,EACrB,6BAA6B,EAC7B,2BAA2B,EAC3B,kCAAkC,EAClC,8BAA8B,EAC9B,qBAAqB,GACtB,MAAM,0BAA0B,CAAC;AAClC,YAAY,EACV,iBAAiB,EACjB,uBAAuB,EACvB,iBAAiB,GAClB,MAAM,0BAA0B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/session/index.ts"],"names":[],"mappings":"AAAA,sFAAsF;AACtF,OAAO,EACL,uBAAuB,EACvB,2BAA2B,EAC3B,gCAAgC,EAChC,mBAAmB,EACnB,kBAAkB,EAClB,8BAA8B,EAC9B,kBAAkB,EAClB,iBAAiB,EACjB,kBAAkB,EAClB,2BAA2B,GAC5B,MAAM,2BAA2B,CAAC;AACnC,0EAA0E;AAC1E,YAAY,EACV,6BAA6B,EAC7B,cAAc,EACd,yBAAyB,EACzB,oBAAoB,GACrB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,4BAA4B,EAC5B,+BAA+B,EAC/B,oCAAoC,EACpC,sBAAsB,EACtB,+BAA+B,EAC/B,8BAA8B,EAC9B,uBAAuB,EACvB,sBAAsB,EACtB,yCAAyC,EACzC,kCAAkC,EAClC,sBAAsB,EACtB,qBAAqB,EACrB,sBAAsB,EACtB,+BAA+B,GAChC,MAAM,2BAA2B,CAAC;AACnC,YAAY,EACV,iCAAiC,EACjC,YAAY,EACZ,yBAAyB,EACzB,gBAAgB,EAChB,qCAAqC,EACrC,0BAA0B,EAC1B,kBAAkB,EAClB,wBAAwB,GACzB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,sBAAsB,EACtB,4BAA4B,EAC5B,4BAA4B,EAC5B,sBAAsB,EACtB,sBAAsB,GACvB,MAAM,2BAA2B,CAAC;AACnC,YAAY,EAAE,0BAA0B,EAAE,MAAM,2BAA2B,CAAC;AAC5E,OAAO,EACL,qCAAqC,EACrC,oCAAoC,EACpC,gCAAgC,EAChC,6BAA6B,EAC7B,iCAAiC,EACjC,8BAA8B,EAC9B,iCAAiC,EACjC,8BAA8B,EAC9B,8BAA8B,GAC/B,MAAM,4BAA4B,CAAC;AACpC,YAAY,EACV,+BAA+B,EAC/B,yBAAyB,EACzB,mCAAmC,EACnC,yCAAyC,EACzC,0CAA0C,EAC1C,4BAA4B,EAC5B,uCAAuC,EACvC,2BAA2B,EAC3B,kCAAkC,EAClC,kCAAkC,EAClC,yBAAyB,EACzB,gCAAgC,EAChC,0BAA0B,GAC3B,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,qBAAqB,EACrB,2BAA2B,EAC3B,qBAAqB,EACrB,6BAA6B,EAC7B,2BAA2B,EAC3B,kCAAkC,EAClC,8BAA8B,EAC9B,qBAAqB,GACtB,MAAM,0BAA0B,CAAC;AAClC,YAAY,EACV,iBAAiB,EACjB,uBAAuB,EACvB,iBAAiB,GAClB,MAAM,0BAA0B,CAAC"}
|
package/dist/session/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/** @deprecated Use the SessionResumeStore exports; supported for one release only. */
|
|
2
2
|
export { SESSION_SIDECAR_VERSION, assertSessionSidecarMatches, findLatestSessionSidecarForIssue, listSessionSidecars, loadSessionSidecar, requireSessionSidecarForResume, saveSessionSidecar, sessionSidecarDir, sessionSidecarPath, SessionSidecarNotFoundError, } from './session-resume-store.js';
|
|
3
|
-
export { SESSION_RESUME_STORE_VERSION, assertSessionResumeStoreMatches, findLatestSessionResumeStoreForIssue, harnessPhaseFromLegacyLifecycle, listSessionResumeStores, loadSessionResumeStore, requireSessionResumeStoreForResume, saveSessionResumeStore, sessionResumeStoreDir, sessionResumeStorePath, SessionResumeStoreNotFoundError, } from './session-resume-store.js';
|
|
3
|
+
export { SESSION_RESUME_STORE_VERSION, assertSessionResumeStoreMatches, findLatestSessionResumeStoreForIssue, findSessionResumeStore, harnessPhaseFromLegacyLifecycle, listLocatedSessionResumeStores, listSessionResumeStores, loadSessionResumeStore, requireLocatedSessionResumeStoreForResume, requireSessionResumeStoreForResume, saveSessionResumeStore, sessionResumeStoreDir, sessionResumeStorePath, SessionResumeStoreNotFoundError, } from './session-resume-store.js';
|
|
4
4
|
export { loadOpenQuestionsStore, legacyOpenQuestionsStorePath, OPEN_QUESTIONS_STORE_VERSION, openQuestionsStorePath, saveOpenQuestionsStore, } from './open-questions-store.js';
|
|
5
5
|
export { CONDUCTOR_MESSAGE_HISTORY_MAX_ENTRIES, CONDUCTOR_MESSAGE_PAGE_DEFAULT_LIMIT, CONDUCTOR_MESSAGE_PAGE_MAX_LIMIT, OPEN_QUESTION_CONTROL_METHODS, OpenQuestionControlOperationError, OpenQuestionControlRemoteError, OpenQuestionControlTransportError, sendOpenQuestionControlRequest, startOpenQuestionControlServer, } from './open-question-control.js';
|
|
6
6
|
export { loadSessionStateStore, legacySessionStateStorePath, saveSessionStatusLine, SESSION_STATE_STORE_MAX_BYTES, SESSION_STATE_STORE_VERSION, SESSION_STATUS_HISTORY_MAX_ENTRIES, SESSION_STATUS_LINE_MAX_LENGTH, sessionStateStorePath, } from './session-state-store.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/session/index.ts"],"names":[],"mappings":"AAAA,sFAAsF;AACtF,OAAO,EACL,uBAAuB,EACvB,2BAA2B,EAC3B,gCAAgC,EAChC,mBAAmB,EACnB,kBAAkB,EAClB,8BAA8B,EAC9B,kBAAkB,EAClB,iBAAiB,EACjB,kBAAkB,EAClB,2BAA2B,GAC5B,MAAM,2BAA2B,CAAC;AAQnC,OAAO,EACL,4BAA4B,EAC5B,+BAA+B,EAC/B,oCAAoC,EACpC,+BAA+B,EAC/B,uBAAuB,EACvB,sBAAsB,EACtB,kCAAkC,EAClC,sBAAsB,EACtB,qBAAqB,EACrB,sBAAsB,EACtB,+BAA+B,GAChC,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/session/index.ts"],"names":[],"mappings":"AAAA,sFAAsF;AACtF,OAAO,EACL,uBAAuB,EACvB,2BAA2B,EAC3B,gCAAgC,EAChC,mBAAmB,EACnB,kBAAkB,EAClB,8BAA8B,EAC9B,kBAAkB,EAClB,iBAAiB,EACjB,kBAAkB,EAClB,2BAA2B,GAC5B,MAAM,2BAA2B,CAAC;AAQnC,OAAO,EACL,4BAA4B,EAC5B,+BAA+B,EAC/B,oCAAoC,EACpC,sBAAsB,EACtB,+BAA+B,EAC/B,8BAA8B,EAC9B,uBAAuB,EACvB,sBAAsB,EACtB,yCAAyC,EACzC,kCAAkC,EAClC,sBAAsB,EACtB,qBAAqB,EACrB,sBAAsB,EACtB,+BAA+B,GAChC,MAAM,2BAA2B,CAAC;AAWnC,OAAO,EACL,sBAAsB,EACtB,4BAA4B,EAC5B,4BAA4B,EAC5B,sBAAsB,EACtB,sBAAsB,GACvB,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EACL,qCAAqC,EACrC,oCAAoC,EACpC,gCAAgC,EAChC,6BAA6B,EAC7B,iCAAiC,EACjC,8BAA8B,EAC9B,iCAAiC,EACjC,8BAA8B,EAC9B,8BAA8B,GAC/B,MAAM,4BAA4B,CAAC;AAgBpC,OAAO,EACL,qBAAqB,EACrB,2BAA2B,EAC3B,qBAAqB,EACrB,6BAA6B,EAC7B,2BAA2B,EAC3B,kCAAkC,EAClC,8BAA8B,EAC9B,qBAAqB,GACtB,MAAM,0BAA0B,CAAC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { OpenQuestionRegistrySnapshot } from '../escalation/open-question.js';
|
|
2
|
+
import type { SessionResumeStoreLocation } from './session-resume-store.js';
|
|
2
3
|
export declare const OPEN_QUESTIONS_STORE_VERSION = 1;
|
|
3
4
|
export interface OpenQuestionsStoreDocument extends OpenQuestionRegistrySnapshot {
|
|
4
5
|
version: typeof OPEN_QUESTIONS_STORE_VERSION;
|
|
@@ -6,6 +7,8 @@ export interface OpenQuestionsStoreDocument extends OpenQuestionRegistrySnapshot
|
|
|
6
7
|
export declare function openQuestionsStorePath(input: {
|
|
7
8
|
repoRoot: string;
|
|
8
9
|
conductorAgentId: string;
|
|
10
|
+
issueUrl?: string;
|
|
11
|
+
location?: SessionResumeStoreLocation;
|
|
9
12
|
}): string;
|
|
10
13
|
export declare function legacyOpenQuestionsStorePath(input: {
|
|
11
14
|
repoRoot: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"open-questions-store.d.ts","sourceRoot":"","sources":["../../src/session/open-questions-store.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAEV,4BAA4B,EAC7B,MAAM,gCAAgC,CAAC;
|
|
1
|
+
{"version":3,"file":"open-questions-store.d.ts","sourceRoot":"","sources":["../../src/session/open-questions-store.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAEV,4BAA4B,EAC7B,MAAM,gCAAgC,CAAC;AAExC,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,2BAA2B,CAAC;AAE5E,eAAO,MAAM,4BAA4B,IAAI,CAAC;AAE9C,MAAM,WAAW,0BACf,SAAQ,4BAA4B;IACpC,OAAO,EAAE,OAAO,4BAA4B,CAAC;CAC9C;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE;IAC5C,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,0BAA0B,CAAC;CACvC,GAAG,MAAM,CAWT;AAED,wBAAgB,4BAA4B,CAAC,KAAK,EAAE;IAClD,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,EAAE,MAAM,CAAC;CAC1B,GAAG,MAAM,CAIT;AAED,wBAAsB,sBAAsB,CAC1C,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,4BAA4B,GAAG,SAAS,CAAC,CAUnD;AAED,wBAAsB,sBAAsB,CAC1C,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,4BAA4B,GACrC,OAAO,CAAC,IAAI,CAAC,CAsBf"}
|
|
@@ -4,7 +4,14 @@ import yaml from 'js-yaml';
|
|
|
4
4
|
import { resolveEnsemblePaths } from '../ensemble-paths.js';
|
|
5
5
|
export const OPEN_QUESTIONS_STORE_VERSION = 1;
|
|
6
6
|
export function openQuestionsStorePath(input) {
|
|
7
|
-
|
|
7
|
+
const paths = resolveEnsemblePaths({ repoRoot: input.repoRoot });
|
|
8
|
+
if (input.location === 'canonical-slug') {
|
|
9
|
+
if (!input.issueUrl) {
|
|
10
|
+
throw new Error('issueUrl is required for a canonical-slug open questions path.');
|
|
11
|
+
}
|
|
12
|
+
return paths.canonicalOpenQuestionsPath(input.issueUrl, input.conductorAgentId);
|
|
13
|
+
}
|
|
14
|
+
return paths.openQuestionsPath(input.conductorAgentId);
|
|
8
15
|
}
|
|
9
16
|
export function legacyOpenQuestionsStorePath(input) {
|
|
10
17
|
return resolveEnsemblePaths({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"open-questions-store.js","sourceRoot":"","sources":["../../src/session/open-questions-store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7E,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,IAAI,MAAM,SAAS,CAAC;AAK3B,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"open-questions-store.js","sourceRoot":"","sources":["../../src/session/open-questions-store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7E,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,IAAI,MAAM,SAAS,CAAC;AAK3B,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAG5D,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC,CAAC;AAO9C,MAAM,UAAU,sBAAsB,CAAC,KAKtC;IACC,MAAM,KAAK,GAAG,oBAAoB,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;IACjE,IAAI,KAAK,CAAC,QAAQ,KAAK,gBAAgB,EAAE,CAAC;QACxC,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CACb,gEAAgE,CACjE,CAAC;QACJ,CAAC;QACD,OAAO,KAAK,CAAC,0BAA0B,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,gBAAgB,CAAC,CAAC;IAClF,CAAC;IACD,OAAO,KAAK,CAAC,iBAAiB,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;AACzD,CAAC;AAED,MAAM,UAAU,4BAA4B,CAAC,KAG5C;IACC,OAAO,oBAAoB,CAAC;QAC1B,QAAQ,EAAE,KAAK,CAAC,QAAQ;KACzB,CAAC,CAAC,uBAAuB,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;AACrD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,IAAY;IAEZ,IAAI,GAAW,CAAC;IAChB,IAAI,CAAC;QACH,GAAG,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACrC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,QAAQ,CAAC,KAAK,CAAC;YAAE,OAAO,SAAS,CAAC;QACtC,MAAM,KAAK,CAAC;IACd,CAAC;IAED,OAAO,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AACjD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,IAAY,EACZ,QAAsC;IAEtC,MAAM,QAAQ,GAAG,uBAAuB,CAAC;QACvC,OAAO,EAAE,4BAA4B;QACrC,GAAG,QAAQ;KACZ,CAAC,CAAC;IACH,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAChC,MAAM,KAAK,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IACzD,MAAM,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IAC9B,MAAM,QAAQ,GAAG,GAAG,IAAI,MAAM,CAAC;IAC/B,MAAM,SAAS,CACb,QAAQ,EACR,GAAG,IAAI,CAAC,IAAI,CACV;QACE,OAAO,EAAE,4BAA4B;QACrC,GAAG,QAAQ;KACZ,EACD,EAAE,SAAS,EAAE,GAAG,EAAE,CACnB,IAAI,EACL,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,CAClC,CAAC;IACF,MAAM,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IAC7B,MAAM,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;AAC/B,CAAC;AAED,SAAS,uBAAuB,CAC9B,KAAc;IAEd,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;IAC3C,IAAI,MAAM,CAAC,OAAO,KAAK,4BAA4B,EAAE,CAAC;QACpD,MAAM,IAAI,KAAK,CACb,4CAA4C,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CACrE,CAAC;IACJ,CAAC;IACD,IACE,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,QAAQ,CAAC;QACrC,MAAM,CAAC,QAAmB,GAAG,CAAC,EAC/B,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;IAC3D,CAAC;IACD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC;QACzC,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;IAChE,CAAC;IAED,MAAM,WAAW,GAAG,IAAI,GAAG,EAAU,CAAC;IACtC,IAAI,uBAAuB,GAAG,CAAC,CAAC;IAChC,KAAK,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,aAAa,CAAC,OAAO,EAAE,EAAE,CAAC;QAC/D,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,oBAAoB,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QAC3E,IAAI,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;YACxB,MAAM,IAAI,KAAK,CAAC,6CAA6C,EAAE,EAAE,CAAC,CAAC;QACrE,CAAC;QACD,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACpB,IACE,UAAU,KAAK,SAAS;YACxB,UAAU,GAAG,uBAAuB,EACpC,CAAC;YACD,uBAAuB,GAAG,UAAU,CAAC;QACvC,CAAC;IACH,CAAC;IACD,IAAI,uBAAuB,GAAI,MAAM,CAAC,QAAmB,EAAE,CAAC;QAC1D,MAAM,IAAI,KAAK,CACb,mEAAmE,uBAAuB,EAAE,CAC7F,CAAC;IACJ,CAAC;IAED,OAAO;QACL,QAAQ,EAAE,MAAM,CAAC,QAAkB;QACnC,aAAa,EAAE,MAAM,CAAC,aAA+B;KACtD,CAAC;AACJ,CAAC;AAED,SAAS,oBAAoB,CAC3B,KAAc,EACd,KAAa;IAEb,MAAM,KAAK,GAAG,iBAAiB,KAAK,GAAG,CAAC;IACxC,MAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IACxC,aAAa,CAAC,QAAQ,CAAC,EAAE,EAAE,GAAG,KAAK,KAAK,CAAC,CAAC;IAC1C,MAAM,EAAE,GAAG,QAAQ,CAAC,EAAY,CAAC;IACjC,MAAM,OAAO,GAAG,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC5C,MAAM,UAAU,GAAG,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC5D,IAAI,UAAU,KAAK,SAAS,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,UAAU,CAAC,EAAE,CAAC;QAClE,MAAM,IAAI,KAAK,CAAC,gCAAgC,KAAK,KAAK,CAAC,CAAC;IAC9D,CAAC;IACD,aAAa,CAAC,QAAQ,CAAC,QAAQ,EAAE,GAAG,KAAK,WAAW,CAAC,CAAC;IACtD,aAAa,CAAC,QAAQ,CAAC,YAAY,EAAE,GAAG,KAAK,eAAe,CAAC,CAAC;IAC9D,IACE,QAAQ,CAAC,YAAY,KAAK,QAAQ;QAClC,QAAQ,CAAC,YAAY,KAAK,MAAM;QAChC,QAAQ,CAAC,YAAY,KAAK,QAAQ,EAClC,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,gCAAgC,KAAK,eAAe,CAAC,CAAC;IACxE,CAAC;IACD,IAAI,QAAQ,CAAC,MAAM,KAAK,MAAM,IAAI,QAAQ,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;QACjE,MAAM,IAAI,KAAK,CAAC,gCAAgC,KAAK,SAAS,CAAC,CAAC;IAClE,CAAC;IACD,IACE,QAAQ,CAAC,MAAM,KAAK,WAAW;QAC/B,QAAQ,CAAC,MAAM,KAAK,WAAW,EAC/B,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,gCAAgC,KAAK,SAAS,CAAC,CAAC;IAClE,CAAC;IACD,IACE,OAAO,QAAQ,CAAC,OAAO,KAAK,QAAQ;QACpC,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,EAClC,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,gCAAgC,KAAK,UAAU,CAAC,CAAC;IACnE,CAAC;IAED,KAAK,MAAM,GAAG,IAAI;QAChB,SAAS;QACT,QAAQ;QACR,gBAAgB;QAChB,eAAe;QACf,WAAW;QACX,qBAAqB;KACtB,EAAE,CAAC;QACF,qBAAqB,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,GAAG,KAAK,IAAI,GAAG,EAAE,CAAC,CAAC;IAC1D,CAAC;IACD,IACE,QAAQ,CAAC,MAAM,KAAK,SAAS;QAC7B,QAAQ,CAAC,MAAM,KAAK,KAAK;QACzB,QAAQ,CAAC,MAAM,KAAK,IAAI;QACxB,QAAQ,CAAC,MAAM,KAAK,SAAS,EAC7B,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,gCAAgC,KAAK,SAAS,CAAC,CAAC;IAClE,CAAC;IACD,IACE,QAAQ,CAAC,QAAQ,KAAK,SAAS;QAC/B,OAAO,QAAQ,CAAC,QAAQ,KAAK,SAAS,EACtC,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,gCAAgC,KAAK,WAAW,CAAC,CAAC;IACpE,CAAC;IACD,IACE,QAAQ,CAAC,UAAU,KAAK,SAAS;QACjC,CAAC,OAAO,QAAQ,CAAC,UAAU,KAAK,QAAQ;YACtC,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,EACxC,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,gCAAgC,KAAK,aAAa,CAAC,CAAC;IACtE,CAAC;IACD,IACE,QAAQ,CAAC,UAAU,KAAK,SAAS;QACjC,QAAQ,CAAC,UAAU,KAAK,UAAU;QAClC,QAAQ,CAAC,UAAU,KAAK,WAAW,EACnC,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,gCAAgC,KAAK,aAAa,CAAC,CAAC;IACtE,CAAC;IACD,IAAI,QAAQ,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;QACnC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;YACrC,MAAM,IAAI,KAAK,CAAC,gCAAgC,KAAK,UAAU,CAAC,CAAC;QACnE,CAAC;QACD,KAAK,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,IAAI,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;YAC/D,MAAM,YAAY,GAAG,QAAQ,CAAC,MAAM,EAAE,GAAG,KAAK,YAAY,WAAW,GAAG,CAAC,CAAC;YAC1E,aAAa,CAAC,YAAY,CAAC,EAAE,EAAE,GAAG,KAAK,YAAY,WAAW,MAAM,CAAC,CAAC;YACtE,aAAa,CACX,YAAY,CAAC,KAAK,EAClB,GAAG,KAAK,YAAY,WAAW,SAAS,CACzC,CAAC;QACJ,CAAC;IACH,CAAC;IACD,OAAO;QACL,EAAE;QACF,GAAG,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC9D,CAAC;AACJ,CAAC;AAED,SAAS,QAAQ,CAAC,KAAc,EAAE,KAAa;IAC7C,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAChE,MAAM,IAAI,KAAK,CAAC,gCAAgC,KAAK,EAAE,CAAC,CAAC;IAC3D,CAAC;IACD,OAAO,KAAgC,CAAC;AAC1C,CAAC;AAED,SAAS,aAAa,CAAC,KAAc,EAAE,KAAa;IAClD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CAAC,gCAAgC,KAAK,EAAE,CAAC,CAAC;IAC3D,CAAC;AACH,CAAC;AAED,SAAS,qBAAqB,CAAC,KAAc,EAAE,KAAa;IAC1D,IAAI,KAAK,KAAK,SAAS,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACrD,MAAM,IAAI,KAAK,CAAC,gCAAgC,KAAK,EAAE,CAAC,CAAC;IAC3D,CAAC;AACH,CAAC;AAED,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACd,MAAM,IAAI,KAAK;QACd,KAA+B,CAAC,IAAI,KAAK,QAAQ,CACnD,CAAC;AACJ,CAAC"}
|
|
@@ -76,6 +76,22 @@ export interface SessionResumeStorePathOptions {
|
|
|
76
76
|
repoRoot: string;
|
|
77
77
|
conductorAgentId: string;
|
|
78
78
|
}
|
|
79
|
+
export type SessionResumeStoreLocation = 'canonical-slug' | 'user-path-hash' | 'project-legacy';
|
|
80
|
+
export interface LocatedSessionResumeStore {
|
|
81
|
+
resumeStore: SessionResumeStore;
|
|
82
|
+
path: string;
|
|
83
|
+
location: SessionResumeStoreLocation;
|
|
84
|
+
}
|
|
85
|
+
export interface SessionResumeStoreDuplicateDiagnostic {
|
|
86
|
+
conductorAgentId: string;
|
|
87
|
+
selectedPath: string;
|
|
88
|
+
selectedLocation: SessionResumeStoreLocation;
|
|
89
|
+
candidates: Array<{
|
|
90
|
+
path: string;
|
|
91
|
+
location: SessionResumeStoreLocation;
|
|
92
|
+
hasHarnessSocketPath: boolean;
|
|
93
|
+
}>;
|
|
94
|
+
}
|
|
79
95
|
/** @deprecated Use SessionResumeStorePathOptions; supported for one release only. */
|
|
80
96
|
export type SessionSidecarPathOptions = SessionResumeStorePathOptions;
|
|
81
97
|
export declare function sessionResumeStoreDir(repoRoot: string): string;
|
|
@@ -88,6 +104,11 @@ export declare function requireSessionResumeStoreForResume(input: {
|
|
|
88
104
|
repoRoot: string;
|
|
89
105
|
conductorAgentId: string;
|
|
90
106
|
}): Promise<SessionResumeStore>;
|
|
107
|
+
export declare function requireLocatedSessionResumeStoreForResume(input: {
|
|
108
|
+
repoRoot: string;
|
|
109
|
+
conductorAgentId: string;
|
|
110
|
+
onDuplicate?: (diagnostic: SessionResumeStoreDuplicateDiagnostic) => void;
|
|
111
|
+
}): Promise<LocatedSessionResumeStore>;
|
|
91
112
|
/** @deprecated Use requireSessionResumeStoreForResume; supported for one release only. */
|
|
92
113
|
export declare function requireSessionSidecarForResume(input: {
|
|
93
114
|
repoRoot: string;
|
|
@@ -96,7 +117,15 @@ export declare function requireSessionSidecarForResume(input: {
|
|
|
96
117
|
export declare function saveSessionResumeStore(path: string, resumeStore: SessionResumeStore): Promise<void>;
|
|
97
118
|
/** @deprecated Use saveSessionResumeStore; supported for one release only. */
|
|
98
119
|
export declare const saveSessionSidecar: typeof saveSessionResumeStore;
|
|
99
|
-
export declare function listSessionResumeStores(repoRoot: string
|
|
120
|
+
export declare function listSessionResumeStores(repoRoot: string, options?: {
|
|
121
|
+
onDuplicate?: (diagnostic: SessionResumeStoreDuplicateDiagnostic) => void;
|
|
122
|
+
}): Promise<SessionResumeStore[]>;
|
|
123
|
+
export declare function listLocatedSessionResumeStores(repoRoot: string, options?: {
|
|
124
|
+
onDuplicate?: (diagnostic: SessionResumeStoreDuplicateDiagnostic) => void;
|
|
125
|
+
}): Promise<LocatedSessionResumeStore[]>;
|
|
126
|
+
export declare function findSessionResumeStore(repoRoot: string, conductorAgentId: string, options?: {
|
|
127
|
+
onDuplicate?: (diagnostic: SessionResumeStoreDuplicateDiagnostic) => void;
|
|
128
|
+
}): Promise<LocatedSessionResumeStore | undefined>;
|
|
100
129
|
/** @deprecated Use listSessionResumeStores; supported for one release only. */
|
|
101
130
|
export declare const listSessionSidecars: typeof listSessionResumeStores;
|
|
102
131
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-resume-store.d.ts","sourceRoot":"","sources":["../../src/session/session-resume-store.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"session-resume-store.d.ts","sourceRoot":"","sources":["../../src/session/session-resume-store.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AAC9E,OAAO,EAEL,KAAK,mBAAmB,EACzB,MAAM,6BAA6B,CAAC;AACrC,OAAO,KAAK,EAAe,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACxE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAG3D,eAAO,MAAM,4BAA4B,IAAI,CAAC;AAE9C,oFAAoF;AACpF,eAAO,MAAM,uBAAuB,IAA+B,CAAC;AAEpE,MAAM,MAAM,gBAAgB,GACxB,QAAQ,GACR,QAAQ,GACR,aAAa,GACb,SAAS,CAAC;AAEd,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,GAAG,MAAM,CAAC;AAE3E,wBAAgB,+BAA+B,CAC7C,SAAS,EAAE,gBAAgB,GAAG,SAAS,GACtC,YAAY,GAAG,IAAI,CAWrB;AAED,qBAAa,+BAAgC,SAAQ,KAAK;aAItC,gBAAgB,EAAE,MAAM;aACxB,IAAI,EAAE,MAAM;IAJ9B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAoC;gBAGvC,gBAAgB,EAAE,MAAM,EACxB,IAAI,EAAE,MAAM;CAO/B;AAED,uFAAuF;AACvF,qBAAa,2BAA4B,SAAQ,+BAA+B;IAC9E,SAAkB,IAAI,+BAA+B;gBAEzC,gBAAgB,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;CAInD;AAED,gFAAgF;AAChF,MAAM,MAAM,oBAAoB,GAAG,wBAAwB,CAAC;AAE5D,MAAM,WAAW,wBAAwB;IACvC,YAAY,EAAE,MAAM,CAAC;IACrB,+DAA+D;IAC/D,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,oEAAoE;IACpE,QAAQ,CAAC,EAAE,mBAAmB,CAAC;CAChC;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,OAAO,4BAA4B,CAAC;IAC7C,gBAAgB,EAAE,MAAM,CAAC;IACzB,kDAAkD;IAClD,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC,qDAAqD;IACrD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,wDAAwD;IACxD,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,yDAAyD;IACzD,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,0DAA0D;IAC1D,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,eAAe,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,YAAY,EAAE,CAAC;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,wBAAwB,CAAC,CAAC;IAClD,gCAAgC;IAChC,aAAa,CAAC,EAAE,mBAAmB,CAAC;IACpC,oEAAoE;IACpE,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,kFAAkF;IAClF,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,0EAA0E;IAC1E,SAAS,CAAC,EAAE,gBAAgB,CAAC;IAC7B,+CAA+C;IAC/C,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,mEAAmE;IACnE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,uDAAuD;IACvD,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,0EAA0E;AAC1E,MAAM,MAAM,cAAc,GAAG,kBAAkB,CAAC;AAEhD,MAAM,WAAW,iCAAiC;IAChD,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,yFAAyF;AACzF,MAAM,MAAM,6BAA6B,GAAG,iCAAiC,CAAC;AAE9E,MAAM,WAAW,6BAA6B;IAC5C,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,MAAM,0BAA0B,GAClC,gBAAgB,GAChB,gBAAgB,GAChB,gBAAgB,CAAC;AAErB,MAAM,WAAW,yBAAyB;IACxC,WAAW,EAAE,kBAAkB,CAAC;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,0BAA0B,CAAC;CACtC;AAED,MAAM,WAAW,qCAAqC;IACpD,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,0BAA0B,CAAC;IAC7C,UAAU,EAAE,KAAK,CAAC;QAChB,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,EAAE,0BAA0B,CAAC;QACrC,oBAAoB,EAAE,OAAO,CAAC;KAC/B,CAAC,CAAC;CACJ;AAED,qFAAqF;AACrF,MAAM,MAAM,yBAAyB,GAAG,6BAA6B,CAAC;AAEtE,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAE9D;AAED,wBAAgB,2BAA2B,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEpE;AAED,wBAAgB,4BAA4B,CAC1C,OAAO,EAAE,6BAA6B,GACrC,MAAM,CAIR;AAED,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,6BAA6B,GAAG,MAAM,CAIrF;AAED,wBAAsB,sBAAsB,CAC1C,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,kBAAkB,GAAG,SAAS,CAAC,CAGzC;AA0BD,6DAA6D;AAC7D,wBAAsB,kCAAkC,CAAC,KAAK,EAAE;IAC9D,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,EAAE,MAAM,CAAC;CAC1B,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAG9B;AAED,wBAAsB,yCAAyC,CAAC,KAAK,EAAE;IACrE,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,CAAC,EAAE,CAAC,UAAU,EAAE,qCAAqC,KAAK,IAAI,CAAC;CAC3E,GAAG,OAAO,CAAC,yBAAyB,CAAC,CAsCrC;AAED,0FAA0F;AAC1F,wBAAsB,8BAA8B,CAAC,KAAK,EAAE;IAC1D,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,EAAE,MAAM,CAAC;CAC1B,GAAG,OAAO,CAAC,cAAc,CAAC,CAY1B;AAED,wBAAsB,sBAAsB,CAC1C,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,kBAAkB,GAC9B,OAAO,CAAC,IAAI,CAAC,CAiBf;AAmBD,8EAA8E;AAC9E,eAAO,MAAM,kBAAkB,+BAAyB,CAAC;AAEzD,wBAAsB,uBAAuB,CAC3C,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE;IACP,WAAW,CAAC,EAAE,CAAC,UAAU,EAAE,qCAAqC,KAAK,IAAI,CAAC;CACtE,GACL,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAI/B;AAED,wBAAsB,8BAA8B,CAClD,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE;IACP,WAAW,CAAC,EAAE,CAAC,UAAU,EAAE,qCAAqC,KAAK,IAAI,CAAC;CACtE,GACL,OAAO,CAAC,yBAAyB,EAAE,CAAC,CAEtC;AAED,wBAAsB,sBAAsB,CAC1C,QAAQ,EAAE,MAAM,EAChB,gBAAgB,EAAE,MAAM,EACxB,OAAO,GAAE;IACP,WAAW,CAAC,EAAE,CAAC,UAAU,EAAE,qCAAqC,KAAK,IAAI,CAAC;CACtE,GACL,OAAO,CAAC,yBAAyB,GAAG,SAAS,CAAC,CAKhD;AAmJD,+EAA+E;AAC/E,eAAO,MAAM,mBAAmB,gCAA0B,CAAC;AAE3D;;;GAGG;AACH,wBAAsB,oCAAoC,CACxD,KAAK,EAAE,iCAAiC,GACvC,OAAO,CAAC,kBAAkB,GAAG,SAAS,CAAC,CA0BzC;AAED,4FAA4F;AAC5F,eAAO,MAAM,gCAAgC,6CACP,CAAC;AAEvC,wBAAgB,+BAA+B,CAC7C,WAAW,EAAE,kBAAkB,EAC/B,KAAK,EAAE;IACL,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,EAAE,MAAM,CAAC;IACzB,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC,+CAA+C;IAC/C,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,qEAAqE;IACrE,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,+CAA+C;IAC/C,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B,GACA,IAAI,CA8CN;AAED,uFAAuF;AACvF,eAAO,MAAM,2BAA2B,wCAAkC,CAAC;AAE3E,6EAA6E;AAC7E,eAAO,MAAM,iBAAiB,8BAAwB,CAAC;AAEvD,8EAA8E;AAC9E,eAAO,MAAM,kBAAkB,+BAAyB,CAAC;AAEzD,8EAA8E;AAC9E,eAAO,MAAM,kBAAkB,+BAAyB,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { chmod, mkdir, readdir, readFile, rename, writeFile } from 'node:fs/promises';
|
|
2
|
-
import { dirname, join } from 'node:path';
|
|
2
|
+
import { dirname, join, resolve } from 'node:path';
|
|
3
3
|
import { computeAcpSpawnEnvDigest, } from '../acp/resolve-acp-spawn.js';
|
|
4
4
|
import { resolveEnsemblePaths } from '../ensemble-paths.js';
|
|
5
5
|
export const SESSION_RESUME_STORE_VERSION = 1;
|
|
@@ -74,25 +74,37 @@ async function readSessionResumeStore(path) {
|
|
|
74
74
|
}
|
|
75
75
|
/** `resumeAgentId` 指定時に SessionResumeStore が無い場合は起動失敗とする。 */
|
|
76
76
|
export async function requireSessionResumeStoreForResume(input) {
|
|
77
|
-
const
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
77
|
+
const located = await requireLocatedSessionResumeStoreForResume(input);
|
|
78
|
+
return located.resumeStore;
|
|
79
|
+
}
|
|
80
|
+
export async function requireLocatedSessionResumeStoreForResume(input) {
|
|
81
|
+
const locations = await listSessionResumeStoreLocations(input.repoRoot, {
|
|
82
|
+
onDuplicate: input.onDuplicate,
|
|
83
|
+
});
|
|
84
|
+
const located = locations.find((candidate) => candidate.resumeStore.conductorAgentId === input.conductorAgentId);
|
|
85
|
+
if (!located) {
|
|
86
|
+
const path = sessionResumeStorePath(input);
|
|
87
|
+
throw new SessionResumeStoreNotFoundError(input.conductorAgentId, path);
|
|
83
88
|
}
|
|
89
|
+
const loaded = await readSessionResumeStore(located.path);
|
|
84
90
|
if (!loaded) {
|
|
85
|
-
throw new SessionResumeStoreNotFoundError(input.conductorAgentId, path);
|
|
91
|
+
throw new SessionResumeStoreNotFoundError(input.conductorAgentId, located.path);
|
|
86
92
|
}
|
|
87
93
|
if (loaded.hasLegacyAcpSpawnEnv) {
|
|
88
94
|
// Scrub pre-digest env values before resume validation can reject the
|
|
89
95
|
// session and bypass its normal first write.
|
|
90
|
-
await writeSessionResumeStoreFile(
|
|
96
|
+
await writeSessionResumeStoreFile(located.path, redactLegacyAcpSpawnEnv(loaded.rawValue, loaded.resumeStore));
|
|
91
97
|
}
|
|
92
|
-
if (
|
|
93
|
-
|
|
98
|
+
if (located.location === 'project-legacy') {
|
|
99
|
+
const migratedPath = sessionResumeStorePath(input);
|
|
100
|
+
await writeSessionResumeStoreFile(migratedPath, loaded.resumeStore);
|
|
101
|
+
return {
|
|
102
|
+
resumeStore: loaded.resumeStore,
|
|
103
|
+
path: migratedPath,
|
|
104
|
+
location: 'user-path-hash',
|
|
105
|
+
};
|
|
94
106
|
}
|
|
95
|
-
return loaded.resumeStore;
|
|
107
|
+
return { ...located, resumeStore: loaded.resumeStore };
|
|
96
108
|
}
|
|
97
109
|
/** @deprecated Use requireSessionResumeStoreForResume; supported for one release only. */
|
|
98
110
|
export async function requireSessionSidecarForResume(input) {
|
|
@@ -134,28 +146,138 @@ async function writeSessionResumeStoreFile(path, value) {
|
|
|
134
146
|
}
|
|
135
147
|
/** @deprecated Use saveSessionResumeStore; supported for one release only. */
|
|
136
148
|
export const saveSessionSidecar = saveSessionResumeStore;
|
|
137
|
-
export async function listSessionResumeStores(repoRoot) {
|
|
149
|
+
export async function listSessionResumeStores(repoRoot, options = {}) {
|
|
150
|
+
return (await listLocatedSessionResumeStores(repoRoot, options)).map(({ resumeStore }) => resumeStore);
|
|
151
|
+
}
|
|
152
|
+
export async function listLocatedSessionResumeStores(repoRoot, options = {}) {
|
|
153
|
+
return listSessionResumeStoreLocations(repoRoot, options);
|
|
154
|
+
}
|
|
155
|
+
export async function findSessionResumeStore(repoRoot, conductorAgentId, options = {}) {
|
|
156
|
+
return (await listLocatedSessionResumeStores(repoRoot, options)).find((candidate) => candidate.resumeStore.conductorAgentId === conductorAgentId);
|
|
157
|
+
}
|
|
158
|
+
async function listSessionResumeStoreLocations(repoRoot, options = {}) {
|
|
138
159
|
const paths = resolveEnsemblePaths({ repoRoot });
|
|
139
|
-
const
|
|
140
|
-
|
|
160
|
+
const candidates = [];
|
|
161
|
+
const visited = new Set();
|
|
162
|
+
const readDirectory = async (dir, location, slugRoot) => {
|
|
141
163
|
let entries;
|
|
142
164
|
try {
|
|
143
|
-
entries = await readdir(dir);
|
|
165
|
+
entries = await readdir(dir, { withFileTypes: true });
|
|
144
166
|
}
|
|
145
167
|
catch (error) {
|
|
146
168
|
if (isEnoent(error))
|
|
147
|
-
|
|
169
|
+
return;
|
|
148
170
|
throw error;
|
|
149
171
|
}
|
|
150
172
|
for (const entry of entries) {
|
|
151
|
-
if (!entry.
|
|
173
|
+
if (!entry.isFile() || !entry.name.endsWith('.json'))
|
|
174
|
+
continue;
|
|
175
|
+
const path = join(dir, entry.name);
|
|
176
|
+
if (visited.has(path))
|
|
152
177
|
continue;
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
178
|
+
visited.add(path);
|
|
179
|
+
const resumeStore = await loadSessionResumeStore(path);
|
|
180
|
+
if (!resumeStore)
|
|
181
|
+
continue;
|
|
182
|
+
if (slugRoot &&
|
|
183
|
+
(resolve(resumeStore.repoRoot) !== paths.repoRoot ||
|
|
184
|
+
canonicalSessionDirectory(paths, resumeStore.issueUrl) !== slugRoot)) {
|
|
185
|
+
continue;
|
|
186
|
+
}
|
|
187
|
+
candidates.push({ resumeStore, path, location });
|
|
156
188
|
}
|
|
189
|
+
};
|
|
190
|
+
// The current path-hash and project-local directories are bounded and remain
|
|
191
|
+
// the discovery roots for legacy data.
|
|
192
|
+
await readDirectory(paths.sessionsDir, 'user-path-hash');
|
|
193
|
+
await readDirectory(paths.legacySessionsDir, 'project-legacy');
|
|
194
|
+
// Slug stores are keyed by GitHub repository identity. Search only the
|
|
195
|
+
// host/owner/repository depth and validate repoRoot before accepting a file.
|
|
196
|
+
let hosts;
|
|
197
|
+
try {
|
|
198
|
+
hosts = await readdir(paths.sessionsRoot, { withFileTypes: true });
|
|
199
|
+
}
|
|
200
|
+
catch (error) {
|
|
201
|
+
if (!isEnoent(error))
|
|
202
|
+
throw error;
|
|
203
|
+
hosts = [];
|
|
204
|
+
}
|
|
205
|
+
for (const host of hosts) {
|
|
206
|
+
if (!host.isDirectory() ||
|
|
207
|
+
/^[a-f0-9]{64}$/u.test(host.name) ||
|
|
208
|
+
host.name === 'pi') {
|
|
209
|
+
continue;
|
|
210
|
+
}
|
|
211
|
+
let owners;
|
|
212
|
+
try {
|
|
213
|
+
owners = await readdir(join(paths.sessionsRoot, host.name), {
|
|
214
|
+
withFileTypes: true,
|
|
215
|
+
});
|
|
216
|
+
}
|
|
217
|
+
catch (error) {
|
|
218
|
+
if (isEnoent(error))
|
|
219
|
+
continue;
|
|
220
|
+
throw error;
|
|
221
|
+
}
|
|
222
|
+
for (const owner of owners) {
|
|
223
|
+
if (!owner.isDirectory())
|
|
224
|
+
continue;
|
|
225
|
+
let repositories;
|
|
226
|
+
try {
|
|
227
|
+
repositories = await readdir(join(paths.sessionsRoot, host.name, owner.name), { withFileTypes: true });
|
|
228
|
+
}
|
|
229
|
+
catch (error) {
|
|
230
|
+
if (isEnoent(error))
|
|
231
|
+
continue;
|
|
232
|
+
throw error;
|
|
233
|
+
}
|
|
234
|
+
for (const repository of repositories) {
|
|
235
|
+
if (!repository.isDirectory())
|
|
236
|
+
continue;
|
|
237
|
+
const slugRoot = join(paths.sessionsRoot, host.name, owner.name, repository.name);
|
|
238
|
+
await readDirectory(slugRoot, 'canonical-slug', slugRoot);
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
const byAgentId = new Map();
|
|
243
|
+
for (const candidate of candidates) {
|
|
244
|
+
const matching = byAgentId.get(candidate.resumeStore.conductorAgentId) ?? [];
|
|
245
|
+
matching.push(candidate);
|
|
246
|
+
byAgentId.set(candidate.resumeStore.conductorAgentId, matching);
|
|
247
|
+
}
|
|
248
|
+
const locationPriority = {
|
|
249
|
+
'canonical-slug': 0,
|
|
250
|
+
'user-path-hash': 1,
|
|
251
|
+
'project-legacy': 2,
|
|
252
|
+
};
|
|
253
|
+
const selected = [];
|
|
254
|
+
for (const [conductorAgentId, matches] of byAgentId) {
|
|
255
|
+
matches.sort((left, right) => locationPriority[left.location] - locationPriority[right.location] ||
|
|
256
|
+
right.resumeStore.updatedAt - left.resumeStore.updatedAt);
|
|
257
|
+
const chosen = matches[0];
|
|
258
|
+
selected.push(chosen);
|
|
259
|
+
if (matches.length > 1) {
|
|
260
|
+
options.onDuplicate?.({
|
|
261
|
+
conductorAgentId,
|
|
262
|
+
selectedPath: chosen.path,
|
|
263
|
+
selectedLocation: chosen.location,
|
|
264
|
+
candidates: matches.map((candidate) => ({
|
|
265
|
+
path: candidate.path,
|
|
266
|
+
location: candidate.location,
|
|
267
|
+
hasHarnessSocketPath: candidate.resumeStore.harnessSocketPath !== undefined,
|
|
268
|
+
})),
|
|
269
|
+
});
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
return selected;
|
|
273
|
+
}
|
|
274
|
+
function canonicalSessionDirectory(paths, issueUrl) {
|
|
275
|
+
try {
|
|
276
|
+
return paths.canonicalRepoSessionsDir(issueUrl);
|
|
277
|
+
}
|
|
278
|
+
catch {
|
|
279
|
+
return undefined;
|
|
157
280
|
}
|
|
158
|
-
return [...byAgentId.values()];
|
|
159
281
|
}
|
|
160
282
|
/** @deprecated Use listSessionResumeStores; supported for one release only. */
|
|
161
283
|
export const listSessionSidecars = listSessionResumeStores;
|
|
@@ -436,6 +558,22 @@ function parseAcpSpawnFingerprint(raw, workerName) {
|
|
|
436
558
|
if (!Array.isArray(record.args) || record.args.some((arg) => typeof arg !== 'string')) {
|
|
437
559
|
throw new Error(`Invalid session resume store worker acpSpawn args: ${workerName}`);
|
|
438
560
|
}
|
|
561
|
+
const validModelTags = ['high', 'default', 'low', 'fast'];
|
|
562
|
+
let modelTag;
|
|
563
|
+
if (record.modelTag !== undefined) {
|
|
564
|
+
if (typeof record.modelTag !== 'string' ||
|
|
565
|
+
!validModelTags.includes(record.modelTag)) {
|
|
566
|
+
throw new Error(`Invalid session resume store worker acpSpawn modelTag: ${workerName}`);
|
|
567
|
+
}
|
|
568
|
+
modelTag = record.modelTag;
|
|
569
|
+
}
|
|
570
|
+
let model;
|
|
571
|
+
if (record.model !== undefined) {
|
|
572
|
+
if (typeof record.model !== 'string' || record.model.length === 0) {
|
|
573
|
+
throw new Error(`Invalid session resume store worker acpSpawn model: ${workerName}`);
|
|
574
|
+
}
|
|
575
|
+
model = record.model;
|
|
576
|
+
}
|
|
439
577
|
let envDigest;
|
|
440
578
|
if (record.envDigest !== undefined) {
|
|
441
579
|
if (typeof record.envDigest !== 'string' ||
|
|
@@ -467,6 +605,8 @@ function parseAcpSpawnFingerprint(raw, workerName) {
|
|
|
467
605
|
preset: record.preset,
|
|
468
606
|
command: record.command,
|
|
469
607
|
args: record.args,
|
|
608
|
+
...(modelTag !== undefined ? { modelTag } : {}),
|
|
609
|
+
...(model !== undefined ? { model } : {}),
|
|
470
610
|
...(envDigest ? { envDigest } : {}),
|
|
471
611
|
};
|
|
472
612
|
}
|