{"version":3,"file":"interactive-mode-protocol-status.test.d.ts","sourceRoot":"","sources":["../../../src/modes/interactive/interactive-mode-protocol-status.test.ts"],"names":[],"mappings":"","sourcesContent":["import { mkdirSync, mkdtempSync, rmSync, writeFileSync } from \"node:fs\";\nimport { tmpdir } from \"node:os\";\nimport { join } from \"node:path\";\nimport { Container } from \"@apholdings/jensen-tui\";\nimport { afterEach, describe, expect, it, vi } from \"vitest\";\nimport { InteractiveMode } from \"./interactive-mode.js\";\n\nconst tempDirs: string[] = [];\n\nfunction createTempDir(): string {\n\tconst dir = mkdtempSync(join(tmpdir(), \"jensen-interactive-protocol-status-\"));\n\ttempDirs.push(dir);\n\treturn dir;\n}\n\ndescribe(\"InteractiveMode /protocol-status command\", () => {\n\tafterEach(() => {\n\t\tfor (const dir of tempDirs.splice(0)) {\n\t\t\trmSync(dir, { recursive: true, force: true });\n\t\t}\n\t});\n\n\tit(\"renders Protocol marker and context status through the interactive command surface\", () => {\n\t\tconst rootDir = createTempDir();\n\t\tconst workspaceDir = join(rootDir, \"workspace\");\n\t\tconst appDir = join(workspaceDir, \"app\");\n\t\tconst markerPath = join(workspaceDir, \".jensen\", \"JENSEN_PROTOCOL.md\");\n\t\tmkdirSync(join(workspaceDir, \".jensen\"), { recursive: true });\n\t\tmkdirSync(appDir, { recursive: true });\n\t\twriteFileSync(markerPath, \"protocol\\n\", \"utf8\");\n\n\t\tconst previousCwd = process.cwd();\n\t\tprocess.chdir(appDir);\n\n\t\ttry {\n\t\t\tconst mode = Object.assign(Object.create(InteractiveMode.prototype), {\n\t\t\t\tchatContainer: new Container(),\n\t\t\t\tui: { requestRender: vi.fn() },\n\t\t\t\tsession: {\n\t\t\t\t\tresourceLoader: {\n\t\t\t\t\t\tgetAgentsFiles: () => ({ agentsFiles: [{ path: markerPath, content: \"protocol\\n\" }] }),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t}) as unknown as {\n\t\t\t\thandleProtocolStatusCommand: () => void;\n\t\t\t\tchatContainer: Container;\n\t\t\t};\n\n\t\t\tmode.handleProtocolStatusCommand();\n\n\t\t\texpect(mode.chatContainer.children.at(-1)).toMatchObject({\n\t\t\t\ttext: expect.stringContaining(\"Protocol workspace marker: detected\"),\n\t\t\t});\n\t\t\texpect(mode.chatContainer.children.at(-1)).toMatchObject({\n\t\t\t\ttext: expect.stringContaining(`Effective marker file: ${markerPath}`),\n\t\t\t});\n\t\t} finally {\n\t\t\tprocess.chdir(previousCwd);\n\t\t}\n\t});\n});\n"]}