@@ -62,6 +62,7 @@ type AttemptSpawnWorkspaceHoisted = {
6262 ensureGlobalUndiciEnvProxyDispatcherMock : UnknownMock ;
6363 ensureGlobalUndiciStreamTimeoutsMock : UnknownMock ;
6464 buildEmbeddedMessageActionDiscoveryInputMock : UnknownMock ;
65+ createOpenClawCodingToolsMock : UnknownMock ;
6566 subscribeEmbeddedPiSessionMock : Mock < SubscribeEmbeddedPiSessionFn > ;
6667 acquireSessionWriteLockMock : Mock < AcquireSessionWriteLockFn > ;
6768 installToolResultContextGuardMock : UnknownMock ;
@@ -121,6 +122,7 @@ const hoisted = vi.hoisted((): AttemptSpawnWorkspaceHoisted => {
121122 const ensureGlobalUndiciEnvProxyDispatcherMock = vi . fn ( ) ;
122123 const ensureGlobalUndiciStreamTimeoutsMock = vi . fn ( ) ;
123124 const buildEmbeddedMessageActionDiscoveryInputMock = vi . fn ( ( params : unknown ) => params ) ;
125+ const createOpenClawCodingToolsMock = vi . fn ( ( ) => [ ] ) ;
124126 const installToolResultContextGuardMock = vi . fn ( ( ) => ( ) => { } ) ;
125127 const installContextEngineLoopHookMock = vi . fn ( ( ) => ( ) => { } ) ;
126128 const flushPendingToolResultsAfterIdleMock = vi . fn ( async ( ) => { } ) ;
@@ -170,6 +172,7 @@ const hoisted = vi.hoisted((): AttemptSpawnWorkspaceHoisted => {
170172 ensureGlobalUndiciEnvProxyDispatcherMock,
171173 ensureGlobalUndiciStreamTimeoutsMock,
172174 buildEmbeddedMessageActionDiscoveryInputMock,
175+ createOpenClawCodingToolsMock,
173176 subscribeEmbeddedPiSessionMock,
174177 acquireSessionWriteLockMock,
175178 installToolResultContextGuardMock,
@@ -427,26 +430,8 @@ vi.mock("../../cache-trace.js", () => ({
427430} ) ) ;
428431
429432vi . mock ( "../../pi-tools.js" , ( ) => ( {
430- createOpenClawCodingTools : ( options ?: { workspaceDir ?: string ; spawnWorkspaceDir ?: string } ) => [
431- {
432- name : "sessions_spawn" ,
433- execute : async (
434- _callId : string ,
435- input : { task ?: string } ,
436- _session ?: unknown ,
437- _abortSignal ?: unknown ,
438- _ctx ?: unknown ,
439- ) =>
440- await hoisted . spawnSubagentDirectMock (
441- {
442- task : input . task ?? "" ,
443- } ,
444- {
445- workspaceDir : options ?. spawnWorkspaceDir ?? options ?. workspaceDir ,
446- } ,
447- ) ,
448- } ,
449- ] ,
433+ createOpenClawCodingTools : ( options ?: { workspaceDir ?: string ; spawnWorkspaceDir ?: string } ) =>
434+ hoisted . createOpenClawCodingToolsMock ( options ) ,
450435 resolveToolLoopDetectionConfig : ( ) => undefined ,
451436} ) ) ;
452437
@@ -526,6 +511,9 @@ vi.mock("../../tool-call-id.js", async (importOriginal) => {
526511} ) ;
527512
528513vi . mock ( "../../tool-fs-policy.js" , ( ) => ( {
514+ createToolFsPolicy : ( params : { workspaceOnly ?: boolean } ) => ( {
515+ workspaceOnly : params . workspaceOnly === true ,
516+ } ) ,
529517 resolveEffectiveToolFsWorkspaceOnly : ( ) => false ,
530518} ) ) ;
531519
@@ -767,6 +755,34 @@ export function resetEmbeddedAttemptHarness(
767755 hoisted . buildEmbeddedMessageActionDiscoveryInputMock
768756 . mockReset ( )
769757 . mockImplementation ( ( params ) => params ) ;
758+ hoisted . createOpenClawCodingToolsMock . mockReset ( ) . mockImplementation ( ( ...args : unknown [ ] ) => {
759+ const options = args [ 0 ] as
760+ | {
761+ workspaceDir ?: string ;
762+ spawnWorkspaceDir ?: string ;
763+ }
764+ | undefined ;
765+ return [
766+ {
767+ name : "sessions_spawn" ,
768+ execute : async (
769+ _callId : string ,
770+ input : { task ?: string } ,
771+ _session ?: unknown ,
772+ _abortSignal ?: unknown ,
773+ _ctx ?: unknown ,
774+ ) =>
775+ await hoisted . spawnSubagentDirectMock (
776+ {
777+ task : input . task ?? "" ,
778+ } ,
779+ {
780+ workspaceDir : options ?. spawnWorkspaceDir ?? options ?. workspaceDir ,
781+ } ,
782+ ) ,
783+ } ,
784+ ] ;
785+ } ) ;
770786 hoisted . subscribeEmbeddedPiSessionMock
771787 . mockReset ( )
772788 . mockImplementation ( ( ) => createSubscriptionMock ( ) ) ;
0 commit comments