kith-coord 0.1.6 → 0.1.7
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/CHANGELOG.md +13 -0
- package/README.md +16 -31
- package/bin/kith-menubar +0 -0
- package/dist/THIRD_PARTY_NOTICES.txt +80 -0
- package/dist/cli/index.js +29338 -3955
- package/dist/cli/index.js.map +1 -1
- package/dist/command-worker.js +2 -0
- package/dist/command-worker.js.map +1 -1
- package/dist/index.d.ts +195 -3
- package/dist/index.js +582 -182
- package/dist/index.js.map +1 -1
- package/docs/integrations.md +5 -0
- package/docs/protocol/tools.v1.json +15 -1
- package/docs/protocol.md +10 -2
- package/docs/reliability.md +14 -0
- package/docs/roadmap.md +1 -1
- package/package.json +1 -1
- package/server.json +2 -2
package/dist/command-worker.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/core/command-worker.ts"],"sourcesContent":["// A detached process-group leader. The command cannot start until its supervisor\n// has durably recorded this group and sent the start message over private IPC.\nimport os from 'node:os';\nimport { spawn } from 'node:child_process';\n\nlet started = false;\nprocess.on('disconnect', () => {\n try { process.kill(-process.pid, 'SIGKILL'); } catch { process.exit(1); }\n});\nprocess.once('message', (message: { command: string | string[]; cwd: string; mutexName: string; env?: Record<string, string> }) => {\n if (started) return;\n started = true;\n let finished = false;\n const env = { ...process.env, ...message.env, ...(message.mutexName === 'package-install' ? { KITH_PACKAGE_INSTALL_GUARDED: '1' } : {}) };\n const child = Array.isArray(message.command)\n ? spawn(message.command[0], message.command.slice(1), { cwd: message.cwd, env, stdio: ['ignore', 'inherit', 'inherit'] })\n : spawn(message.command, { cwd: message.cwd, env, stdio: ['ignore', 'inherit', 'inherit'], shell: true });\n child.once('error', (err) => {\n if (finished) return;\n finished = true;\n process.send?.({ error: err.message }, () => process.exit(1));\n });\n child.once('close', (code, signal) => {\n if (finished) return;\n finished = true;\n if (process.connected) process.send?.({ exitCode: code ?? (signal ? 128 + (os.constants.signals[signal] ?? 1) : 1), signal }, () => process.exit(0));\n });\n});\nprocess.send?.({ ready: true });\n"],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../src/core/command-worker.ts"],"sourcesContent":["// A detached process-group leader. The command cannot start until its supervisor\n// has durably recorded this group and sent the start message over private IPC.\nimport os from 'node:os';\nimport { spawn } from 'node:child_process';\n\nlet started = false;\nprocess.on('disconnect', () => {\n try { process.kill(-process.pid, 'SIGKILL'); } catch { process.exit(1); }\n});\nprocess.once('message', (message: { command: string | string[]; cwd: string; mutexName: string; env?: Record<string, string> }) => {\n if (started) return;\n started = true;\n let finished = false;\n const env = { ...process.env, ...message.env, ...(message.mutexName === 'package-install' ? { KITH_PACKAGE_INSTALL_GUARDED: '1' } : {}) };\n const child = Array.isArray(message.command)\n ? spawn(message.command[0], message.command.slice(1), { cwd: message.cwd, env, stdio: ['ignore', 'inherit', 'inherit'] })\n : spawn(message.command, { cwd: message.cwd, env, stdio: ['ignore', 'inherit', 'inherit'], shell: true });\n child.once('error', (err) => {\n if (finished) return;\n finished = true;\n process.send?.({ error: err.message }, () => process.exit(1));\n });\n child.once('close', (code, signal) => {\n if (finished) return;\n finished = true;\n if (process.connected) process.send?.({ exitCode: code ?? (signal ? 128 + (os.constants.signals[signal] ?? 1) : 1), signal }, () => process.exit(0));\n });\n});\nprocess.send?.({ ready: true });\n"],"mappings":";;;AAEA,OAAO,QAAQ;AACf,SAAS,aAAa;AAEtB,IAAI,UAAU;AACd,QAAQ,GAAG,cAAc,MAAM;AAC7B,MAAI;AAAE,YAAQ,KAAK,CAAC,QAAQ,KAAK,SAAS;AAAA,EAAG,QAAQ;AAAE,YAAQ,KAAK,CAAC;AAAA,EAAG;AAC1E,CAAC;AACD,QAAQ,KAAK,WAAW,CAAC,YAA0G;AACjI,MAAI,QAAS;AACb,YAAU;AACV,MAAI,WAAW;AACf,QAAM,MAAM,EAAE,GAAG,QAAQ,KAAK,GAAG,QAAQ,KAAK,GAAI,QAAQ,cAAc,oBAAoB,EAAE,8BAA8B,IAAI,IAAI,CAAC,EAAG;AACxI,QAAM,QAAQ,MAAM,QAAQ,QAAQ,OAAO,IACvC,MAAM,QAAQ,QAAQ,CAAC,GAAG,QAAQ,QAAQ,MAAM,CAAC,GAAG,EAAE,KAAK,QAAQ,KAAK,KAAK,OAAO,CAAC,UAAU,WAAW,SAAS,EAAE,CAAC,IACtH,MAAM,QAAQ,SAAS,EAAE,KAAK,QAAQ,KAAK,KAAK,OAAO,CAAC,UAAU,WAAW,SAAS,GAAG,OAAO,KAAK,CAAC;AAC1G,QAAM,KAAK,SAAS,CAAC,QAAQ;AAC3B,QAAI,SAAU;AACd,eAAW;AACX,YAAQ,OAAO,EAAE,OAAO,IAAI,QAAQ,GAAG,MAAM,QAAQ,KAAK,CAAC,CAAC;AAAA,EAC9D,CAAC;AACD,QAAM,KAAK,SAAS,CAAC,MAAM,WAAW;AACpC,QAAI,SAAU;AACd,eAAW;AACX,QAAI,QAAQ,UAAW,SAAQ,OAAO,EAAE,UAAU,SAAS,SAAS,OAAO,GAAG,UAAU,QAAQ,MAAM,KAAK,KAAK,IAAI,OAAO,GAAG,MAAM,QAAQ,KAAK,CAAC,CAAC;AAAA,EACrJ,CAAC;AACH,CAAC;AACD,QAAQ,OAAO,EAAE,OAAO,KAAK,CAAC;","names":[]}
|
package/dist/index.d.ts
CHANGED
|
@@ -685,10 +685,12 @@ declare class IntentAndTaskEngine {
|
|
|
685
685
|
* Orchestrator Mode: Atomically claims the highest-priority unblocked task whose scope locks are available.
|
|
686
686
|
*/
|
|
687
687
|
claimNextTask(agentId: string): {
|
|
688
|
+
ok: boolean;
|
|
688
689
|
claimed: boolean;
|
|
689
690
|
task: TaskRecord | null;
|
|
690
691
|
fencingToken: number | null;
|
|
691
692
|
locks: LockRecord[];
|
|
693
|
+
activeSiblingIntents: TaskRecord[];
|
|
692
694
|
reason?: string;
|
|
693
695
|
};
|
|
694
696
|
completeTask(params: {
|
|
@@ -703,6 +705,51 @@ declare class IntentAndTaskEngine {
|
|
|
703
705
|
}): TaskRecord[];
|
|
704
706
|
}
|
|
705
707
|
|
|
708
|
+
interface LinkedWorkspaceContract {
|
|
709
|
+
alias: string;
|
|
710
|
+
sourceRepo: string;
|
|
711
|
+
sourceRepoName: string;
|
|
712
|
+
filePath: string;
|
|
713
|
+
absolutePath: string;
|
|
714
|
+
symbols: Array<{
|
|
715
|
+
symbolName: string;
|
|
716
|
+
kind: ExtractedSymbol['kind'];
|
|
717
|
+
signature: string;
|
|
718
|
+
astHash: string;
|
|
719
|
+
}>;
|
|
720
|
+
dirtyInCheckout: boolean | null;
|
|
721
|
+
exportsComplete: boolean;
|
|
722
|
+
ownershipAvailable: boolean;
|
|
723
|
+
lockedByAgent: string | null;
|
|
724
|
+
activeWorktreeDrifts: Array<{
|
|
725
|
+
agentId: string;
|
|
726
|
+
worktreePath: string;
|
|
727
|
+
changedSymbols: string[];
|
|
728
|
+
removedSymbols: string[];
|
|
729
|
+
}>;
|
|
730
|
+
}
|
|
731
|
+
interface WorkspaceContractReport {
|
|
732
|
+
linkedContracts: LinkedWorkspaceContract[];
|
|
733
|
+
warnings: string[];
|
|
734
|
+
complete: boolean;
|
|
735
|
+
}
|
|
736
|
+
interface SwarmPrompts {
|
|
737
|
+
architect: string;
|
|
738
|
+
worker: string;
|
|
739
|
+
}
|
|
740
|
+
declare function buildSwarmPrompts(repoRoot: string): SwarmPrompts;
|
|
741
|
+
/** Inspect explicit local TS/JS path aliases, never arbitrary directories or a global file crawl.
|
|
742
|
+
* Wildcards are resolved against concrete imports at edit time, not unioned across a folder.
|
|
743
|
+
* This is advisory static inspection, not a compiler or a cross-language compatibility verdict.
|
|
744
|
+
*/
|
|
745
|
+
declare function inspectWorkspaceContracts(repoRoot: string, worktreeDir?: string, imports?: string[]): WorkspaceContractReport;
|
|
746
|
+
declare function verifyCrossRepoImportsForFile(params: {
|
|
747
|
+
repoRoot: string;
|
|
748
|
+
worktreeDir?: string;
|
|
749
|
+
filePath: string;
|
|
750
|
+
content: string;
|
|
751
|
+
}): string[];
|
|
752
|
+
|
|
706
753
|
interface AgentUnreadDelta {
|
|
707
754
|
events: CoordEvent[];
|
|
708
755
|
activeConflicts: ConflictRecord[];
|
|
@@ -760,6 +807,9 @@ declare class KithEngine {
|
|
|
760
807
|
tasks: TaskRecord[];
|
|
761
808
|
conflicts: ConflictRecord[];
|
|
762
809
|
contracts: ContractRecord[];
|
|
810
|
+
linkedContracts: LinkedWorkspaceContract[];
|
|
811
|
+
crossRepoWarnings: string[];
|
|
812
|
+
crossRepoComplete: boolean;
|
|
763
813
|
resources: ResourceRecord[];
|
|
764
814
|
mergeQueue: MergeTrainEntry[];
|
|
765
815
|
quarantined: QuarantineRecord[];
|
|
@@ -796,6 +846,9 @@ declare class KithEngine {
|
|
|
796
846
|
isolateWorktree?: boolean;
|
|
797
847
|
}): {
|
|
798
848
|
worktree: SpawnedWorktree | null;
|
|
849
|
+
linkedContracts: LinkedWorkspaceContract[];
|
|
850
|
+
crossRepoWarnings: string[];
|
|
851
|
+
crossRepoComplete: boolean;
|
|
799
852
|
ok: boolean;
|
|
800
853
|
task: TaskRecord | null;
|
|
801
854
|
fencingToken: number;
|
|
@@ -803,11 +856,54 @@ declare class KithEngine {
|
|
|
803
856
|
lockConflicts: LockConflict[];
|
|
804
857
|
activeSiblingIntents: TaskRecord[];
|
|
805
858
|
};
|
|
859
|
+
claimNextTask(params: {
|
|
860
|
+
agentId: string;
|
|
861
|
+
isolateWorktree?: boolean;
|
|
862
|
+
}): {
|
|
863
|
+
worktree: SpawnedWorktree | null;
|
|
864
|
+
publishedContracts: ContractRecord[];
|
|
865
|
+
linkedContracts: LinkedWorkspaceContract[];
|
|
866
|
+
crossRepoWarnings: string[];
|
|
867
|
+
crossRepoComplete: boolean;
|
|
868
|
+
ok: boolean;
|
|
869
|
+
claimed: boolean;
|
|
870
|
+
task: TaskRecord | null;
|
|
871
|
+
fencingToken: number | null;
|
|
872
|
+
locks: LockRecord[];
|
|
873
|
+
activeSiblingIntents: TaskRecord[];
|
|
874
|
+
reason?: string;
|
|
875
|
+
};
|
|
876
|
+
private claimWorktree;
|
|
877
|
+
claimNextTaskWhenAvailable(params: {
|
|
878
|
+
agentId: string;
|
|
879
|
+
isolateWorktree?: boolean;
|
|
880
|
+
waitTimeoutMs: number;
|
|
881
|
+
signal?: AbortSignal;
|
|
882
|
+
}): Promise<{
|
|
883
|
+
worktree: SpawnedWorktree | null;
|
|
884
|
+
publishedContracts: ContractRecord[];
|
|
885
|
+
linkedContracts: LinkedWorkspaceContract[];
|
|
886
|
+
crossRepoWarnings: string[];
|
|
887
|
+
crossRepoComplete: boolean;
|
|
888
|
+
ok: boolean;
|
|
889
|
+
claimed: boolean;
|
|
890
|
+
task: TaskRecord | null;
|
|
891
|
+
fencingToken: number | null;
|
|
892
|
+
locks: LockRecord[];
|
|
893
|
+
activeSiblingIntents: TaskRecord[];
|
|
894
|
+
reason?: string;
|
|
895
|
+
} & {
|
|
896
|
+
waitedMs: number;
|
|
897
|
+
waitTimedOut: boolean;
|
|
898
|
+
}>;
|
|
806
899
|
beginWorkWhenAvailable(params: Parameters<KithEngine['beginWork']>[0] & {
|
|
807
900
|
waitTimeoutMs: number;
|
|
808
901
|
signal?: AbortSignal;
|
|
809
902
|
}): Promise<{
|
|
810
903
|
worktree: SpawnedWorktree | null;
|
|
904
|
+
linkedContracts: LinkedWorkspaceContract[];
|
|
905
|
+
crossRepoWarnings: string[];
|
|
906
|
+
crossRepoComplete: boolean;
|
|
811
907
|
ok: boolean;
|
|
812
908
|
task: TaskRecord | null;
|
|
813
909
|
fencingToken: number;
|
|
@@ -865,6 +961,7 @@ declare function caseSensitivePaths(root: string): boolean;
|
|
|
865
961
|
/** Copies a consistent stopped-state set before opening SQLite, so even SHM reconstruction cannot touch original recovery files. */
|
|
866
962
|
declare function readCoordinationState(directory?: string, options?: {
|
|
867
963
|
ownersOnly?: boolean;
|
|
964
|
+
coordinationOnly?: boolean;
|
|
868
965
|
}): {
|
|
869
966
|
protocolVersion: string;
|
|
870
967
|
observedAt: number;
|
|
@@ -878,6 +975,9 @@ declare function readCoordinationState(directory?: string, options?: {
|
|
|
878
975
|
};
|
|
879
976
|
state: "ready" | "missing" | "unavailable";
|
|
880
977
|
error: string | undefined;
|
|
978
|
+
sessionEpochs: Record<string, number>;
|
|
979
|
+
truncated: boolean;
|
|
980
|
+
schemaVersion: number;
|
|
881
981
|
fencingEpoch: number;
|
|
882
982
|
agents: AgentRecord[];
|
|
883
983
|
tasks: Record<string, unknown>[];
|
|
@@ -893,6 +993,7 @@ declare function readCoordinationState(directory?: string, options?: {
|
|
|
893
993
|
workspaces: ReturnType<typeof observeWorkspaces>;
|
|
894
994
|
} | {
|
|
895
995
|
state: "ready";
|
|
996
|
+
schemaVersion: number;
|
|
896
997
|
fencingEpoch: number;
|
|
897
998
|
agents: AgentRecord[];
|
|
898
999
|
tasks: {
|
|
@@ -926,6 +1027,42 @@ declare function readCoordinationState(directory?: string, options?: {
|
|
|
926
1027
|
node: string;
|
|
927
1028
|
};
|
|
928
1029
|
error: string | undefined;
|
|
1030
|
+
sessionEpochs: Record<string, number>;
|
|
1031
|
+
truncated: boolean;
|
|
1032
|
+
} | {
|
|
1033
|
+
state: "ready";
|
|
1034
|
+
schemaVersion: number;
|
|
1035
|
+
agents: AgentRecord[];
|
|
1036
|
+
sessionEpochs: {
|
|
1037
|
+
[k: string]: number;
|
|
1038
|
+
};
|
|
1039
|
+
tasks: {
|
|
1040
|
+
depends_on: any;
|
|
1041
|
+
scope_globs: any;
|
|
1042
|
+
}[];
|
|
1043
|
+
locks: Record<string, unknown>[];
|
|
1044
|
+
resources: Record<string, unknown>[];
|
|
1045
|
+
mutexWaiters: Record<string, unknown>[];
|
|
1046
|
+
commandGuards: Record<string, unknown>[];
|
|
1047
|
+
mergeQueue: Record<string, unknown>[];
|
|
1048
|
+
truncated: boolean;
|
|
1049
|
+
protocolVersion: string;
|
|
1050
|
+
observedAt: number;
|
|
1051
|
+
repository: {
|
|
1052
|
+
root: string;
|
|
1053
|
+
commonGitDir: string | null;
|
|
1054
|
+
coordDir: string;
|
|
1055
|
+
};
|
|
1056
|
+
runtime: {
|
|
1057
|
+
node: string;
|
|
1058
|
+
};
|
|
1059
|
+
error: string | undefined;
|
|
1060
|
+
fencingEpoch: number;
|
|
1061
|
+
conflicts: Record<string, unknown>[];
|
|
1062
|
+
contracts: Record<string, unknown>[];
|
|
1063
|
+
quarantined: Record<string, unknown>[];
|
|
1064
|
+
events: Record<string, unknown>[];
|
|
1065
|
+
workspaces: ReturnType<typeof observeWorkspaces>;
|
|
929
1066
|
};
|
|
930
1067
|
/** Recovery is an inspection report: it never clears guards, expires claims, deletes worktrees or restores files. */
|
|
931
1068
|
declare function recoveryReport(directory?: string): {
|
|
@@ -956,6 +1093,9 @@ declare function recoveryReport(directory?: string): {
|
|
|
956
1093
|
};
|
|
957
1094
|
state: "ready" | "missing" | "unavailable";
|
|
958
1095
|
error: string | undefined;
|
|
1096
|
+
sessionEpochs: Record<string, number>;
|
|
1097
|
+
truncated: boolean;
|
|
1098
|
+
schemaVersion: number;
|
|
959
1099
|
fencingEpoch: number;
|
|
960
1100
|
agents: AgentRecord[];
|
|
961
1101
|
tasks: Record<string, unknown>[];
|
|
@@ -986,6 +1126,7 @@ declare function recoveryReport(directory?: string): {
|
|
|
986
1126
|
present: boolean;
|
|
987
1127
|
};
|
|
988
1128
|
state: "ready";
|
|
1129
|
+
schemaVersion: number;
|
|
989
1130
|
fencingEpoch: number;
|
|
990
1131
|
agents: AgentRecord[];
|
|
991
1132
|
tasks: {
|
|
@@ -1019,9 +1160,60 @@ declare function recoveryReport(directory?: string): {
|
|
|
1019
1160
|
node: string;
|
|
1020
1161
|
};
|
|
1021
1162
|
error: string | undefined;
|
|
1163
|
+
sessionEpochs: Record<string, number>;
|
|
1164
|
+
truncated: boolean;
|
|
1165
|
+
} | {
|
|
1166
|
+
retainedWorktrees: {
|
|
1167
|
+
path: string;
|
|
1168
|
+
symlink: boolean;
|
|
1169
|
+
agentIds: string[];
|
|
1170
|
+
}[];
|
|
1171
|
+
expiredClaims: Record<string, unknown>[];
|
|
1172
|
+
unfinishedIntegrations: Record<string, unknown>[];
|
|
1173
|
+
setupLock: {
|
|
1174
|
+
path: string;
|
|
1175
|
+
present: boolean;
|
|
1176
|
+
};
|
|
1177
|
+
integrationLock: {
|
|
1178
|
+
path: string;
|
|
1179
|
+
present: boolean;
|
|
1180
|
+
};
|
|
1181
|
+
state: "ready";
|
|
1182
|
+
schemaVersion: number;
|
|
1183
|
+
agents: AgentRecord[];
|
|
1184
|
+
sessionEpochs: {
|
|
1185
|
+
[k: string]: number;
|
|
1186
|
+
};
|
|
1187
|
+
tasks: {
|
|
1188
|
+
depends_on: any;
|
|
1189
|
+
scope_globs: any;
|
|
1190
|
+
}[];
|
|
1191
|
+
locks: Record<string, unknown>[];
|
|
1192
|
+
resources: Record<string, unknown>[];
|
|
1193
|
+
mutexWaiters: Record<string, unknown>[];
|
|
1194
|
+
commandGuards: Record<string, unknown>[];
|
|
1195
|
+
mergeQueue: Record<string, unknown>[];
|
|
1196
|
+
truncated: boolean;
|
|
1197
|
+
protocolVersion: string;
|
|
1198
|
+
observedAt: number;
|
|
1199
|
+
repository: {
|
|
1200
|
+
root: string;
|
|
1201
|
+
commonGitDir: string | null;
|
|
1202
|
+
coordDir: string;
|
|
1203
|
+
};
|
|
1204
|
+
runtime: {
|
|
1205
|
+
node: string;
|
|
1206
|
+
};
|
|
1207
|
+
error: string | undefined;
|
|
1208
|
+
fencingEpoch: number;
|
|
1209
|
+
conflicts: Record<string, unknown>[];
|
|
1210
|
+
contracts: Record<string, unknown>[];
|
|
1211
|
+
quarantined: Record<string, unknown>[];
|
|
1212
|
+
events: Record<string, unknown>[];
|
|
1213
|
+
workspaces: ReturnType<typeof observeWorkspaces>;
|
|
1022
1214
|
};
|
|
1023
1215
|
|
|
1024
|
-
declare const KITH_VERSION = "0.1.
|
|
1025
|
-
declare const KITH_PROTOCOL_VERSION = "1.
|
|
1216
|
+
declare const KITH_VERSION = "0.1.7";
|
|
1217
|
+
declare const KITH_PROTOCOL_VERSION = "1.5.0";
|
|
1026
1218
|
|
|
1027
|
-
export { type AcquireLockResult, type AgentRecord, type AgentUnreadDelta, AstAnalyzer, type BashGuardPostReport, BashMerkleGuard, type BlastRadiusAlert, CoWWorktreeManager, type ConflictRecord, type ContractRecord, CoordDatabase, type CoordEvent, type DeclareIntentResult, DependencyAndContractEngine, type DirtyMergeProbeResult, type ExtractedImport, type ExtractedSymbol, FencingAndAgentManager, type FileAstAnalysis, type FileModificationReport, type FileSnapshotEntry, IntentAndTaskEngine, KITH_PROTOCOL_VERSION, KITH_VERSION, KithEngine, type LockConflict, LockEngine, type LockRecord, type MergeTrainEntry, type PostFileEditHookResult, type QuarantineRecord, type RepositoryLayout, ResourceBroker, type ResourceRecord, SessionOwnershipError, type SessionRegistration, ShadowGitEngine, type SpawnedWorktree, type SpeculativeMergeResult, SpeculativeMergeTrain, StaleFencingTokenError, type SupervisedCommandOptions, type SymbolKind, type TaskRecord, type WorkspaceObservation, type WorktreeChange, caseSensitivePaths, discoverRepository, isWithin, observeWorkspaces, physicalPath, previewIntegration, readCoordinationState, recoveryReport, repositoryFile, worktreeChanges };
|
|
1219
|
+
export { type AcquireLockResult, type AgentRecord, type AgentUnreadDelta, AstAnalyzer, type BashGuardPostReport, BashMerkleGuard, type BlastRadiusAlert, CoWWorktreeManager, type ConflictRecord, type ContractRecord, CoordDatabase, type CoordEvent, type DeclareIntentResult, DependencyAndContractEngine, type DirtyMergeProbeResult, type ExtractedImport, type ExtractedSymbol, FencingAndAgentManager, type FileAstAnalysis, type FileModificationReport, type FileSnapshotEntry, IntentAndTaskEngine, KITH_PROTOCOL_VERSION, KITH_VERSION, KithEngine, type LinkedWorkspaceContract, type LockConflict, LockEngine, type LockRecord, type MergeTrainEntry, type PostFileEditHookResult, type QuarantineRecord, type RepositoryLayout, ResourceBroker, type ResourceRecord, SessionOwnershipError, type SessionRegistration, ShadowGitEngine, type SpawnedWorktree, type SpeculativeMergeResult, SpeculativeMergeTrain, StaleFencingTokenError, type SupervisedCommandOptions, type SwarmPrompts, type SymbolKind, type TaskRecord, type WorkspaceContractReport, type WorkspaceObservation, type WorktreeChange, buildSwarmPrompts, caseSensitivePaths, discoverRepository, inspectWorkspaceContracts, isWithin, observeWorkspaces, physicalPath, previewIntegration, readCoordinationState, recoveryReport, repositoryFile, verifyCrossRepoImportsForFile, worktreeChanges };
|