@evalops/maestro 0.10.45 → 0.10.47
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/agent/providers/openai-codex-session.js +1 -1
- package/dist/agent/providers/openai-codex-session.js.map +1 -1
- package/dist/app-server/in-process-client.d.ts +2 -2
- package/dist/app-server/in-process-client.js.map +1 -1
- package/dist/app-server/protocol-modes-api.js +1 -1
- package/dist/app-server/protocol-modes-api.js.map +1 -1
- package/dist/app-server/sandbox-check-api.d.ts +21 -0
- package/dist/app-server/{sandbox-proof-api.d.ts.map → sandbox-check-api.d.ts.map} +1 -1
- package/dist/app-server/{sandbox-proof-api.js → sandbox-check-api.js} +18 -18
- package/dist/app-server/{sandbox-proof-api.js.map → sandbox-check-api.js.map} +1 -1
- package/dist/app-server/session-api.d.ts +5 -5
- package/dist/app-server/session-api.js +18 -18
- package/dist/app-server/session-api.js.map +1 -1
- package/dist/audit/logger.d.ts +1 -1
- package/dist/cli/args.js +1 -1
- package/dist/cli/args.js.map +1 -1
- package/dist/cli/commands/codex.js +30 -3
- package/dist/cli/commands/codex.js.map +1 -1
- package/dist/cli-tui/auth-state.d.ts +7 -0
- package/dist/cli-tui/auth-state.d.ts.map +1 -0
- package/dist/cli-tui/auth-state.js +46 -0
- package/dist/cli-tui/auth-state.js.map +1 -0
- package/dist/cli-tui/commands/command-catalog.d.ts.map +1 -1
- package/dist/cli-tui/commands/command-catalog.js +6 -1
- package/dist/cli-tui/commands/command-catalog.js.map +1 -1
- package/dist/cli-tui/commands/command-suite-handlers.d.ts +2 -5
- package/dist/cli-tui/commands/command-suite-handlers.d.ts.map +1 -1
- package/dist/cli-tui/commands/command-suite-handlers.js.map +1 -1
- package/dist/cli-tui/commands/subcommands/auth-commands.d.ts +6 -5
- package/dist/cli-tui/commands/subcommands/auth-commands.d.ts.map +1 -1
- package/dist/cli-tui/commands/subcommands/auth-commands.js +2 -2
- package/dist/cli-tui/commands/subcommands/auth-commands.js.map +1 -1
- package/dist/cli-tui/oauth/oauth-flow-controller.d.ts.map +1 -1
- package/dist/cli-tui/oauth/oauth-flow-controller.js +24 -11
- package/dist/cli-tui/oauth/oauth-flow-controller.js.map +1 -1
- package/dist/cli-tui/selectors/oauth-selector-view.d.ts +1 -0
- package/dist/cli-tui/selectors/oauth-selector-view.d.ts.map +1 -1
- package/dist/cli-tui/selectors/oauth-selector-view.js +1 -1
- package/dist/cli-tui/selectors/oauth-selector-view.js.map +1 -1
- package/dist/cli-tui/selectors/oauth-selector.d.ts +2 -1
- package/dist/cli-tui/selectors/oauth-selector.d.ts.map +1 -1
- package/dist/cli-tui/selectors/oauth-selector.js +25 -2
- package/dist/cli-tui/selectors/oauth-selector.js.map +1 -1
- package/dist/cli-tui/tui-renderer/command-suite-wiring.d.ts +2 -5
- package/dist/cli-tui/tui-renderer/command-suite-wiring.d.ts.map +1 -1
- package/dist/cli-tui/tui-renderer/command-suite-wiring.js.map +1 -1
- package/dist/cli-tui/tui-renderer.d.ts +0 -4
- package/dist/cli-tui/tui-renderer.d.ts.map +1 -1
- package/dist/cli-tui/tui-renderer.js +3 -28
- package/dist/cli-tui/tui-renderer.js.map +1 -1
- package/dist/cli.js +896 -497
- package/dist/codex/app-server-client.d.ts +8 -2
- package/dist/codex/app-server-client.d.ts.map +1 -1
- package/dist/codex/app-server-client.js +18 -4
- package/dist/codex/app-server-client.js.map +1 -1
- package/dist/codex/auth.d.ts +4 -0
- package/dist/codex/auth.d.ts.map +1 -0
- package/dist/codex/auth.js +103 -0
- package/dist/codex/auth.js.map +1 -0
- package/dist/db/schema.d.ts +1 -1
- package/dist/evalops/agent-bootstrap.js +2 -2
- package/dist/evalops/agent-bootstrap.js.map +1 -1
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +5 -1
- package/dist/main.js.map +1 -1
- package/dist/models/config-loader.d.ts +5 -5
- package/dist/node_modules/@evalops/contracts/dist/maestro-app-server.d.ts +19 -19
- package/dist/node_modules/@evalops/contracts/dist/maestro-app-server.d.ts.map +1 -1
- package/dist/node_modules/@evalops/contracts/dist/maestro-app-server.js +12 -13
- package/dist/node_modules/@evalops/contracts/dist/maestro-app-server.js.map +1 -1
- package/dist/node_modules/@evalops/contracts/package.json +1 -1
- package/dist/node_modules/@evalops/tui/package.json +1 -1
- package/dist/oauth/index.d.ts +1 -0
- package/dist/oauth/index.d.ts.map +1 -1
- package/dist/oauth/index.js +42 -2
- package/dist/oauth/index.js.map +1 -1
- package/dist/server/app-context.d.ts +2 -0
- package/dist/server/app-context.d.ts.map +1 -1
- package/dist/server/app-context.js.map +1 -1
- package/dist/server/handlers/headless-sessions.d.ts.map +1 -1
- package/dist/server/handlers/headless-sessions.js +44 -10
- package/dist/server/handlers/headless-sessions.js.map +1 -1
- package/dist/server/handlers/hosted-runner-identity.d.ts +2 -0
- package/dist/server/handlers/hosted-runner-identity.d.ts.map +1 -1
- package/dist/server/handlers/hosted-runner-identity.js +2 -0
- package/dist/server/handlers/hosted-runner-identity.js.map +1 -1
- package/dist/server/handlers/platform-a2a-push.d.ts.map +1 -1
- package/dist/server/handlers/platform-a2a-push.js +113 -2
- package/dist/server/handlers/platform-a2a-push.js.map +1 -1
- package/dist/server/headless-in-process-host.d.ts.map +1 -1
- package/dist/server/headless-in-process-host.js +1 -1
- package/dist/server/headless-in-process-host.js.map +1 -1
- package/dist/server/headless-runtime-service.d.ts +9 -2
- package/dist/server/headless-runtime-service.d.ts.map +1 -1
- package/dist/server/headless-runtime-service.js +54 -15
- package/dist/server/headless-runtime-service.js.map +1 -1
- package/dist/tools/background/task-runtime.js +1 -1
- package/dist/tools/background/task-runtime.js.map +1 -1
- package/dist/version.json +2 -2
- package/package.json +1 -1
- package/dist/app-server/sandbox-proof-api.d.ts +0 -21
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-api.js","sourceRoot":"","sources":["../../src/app-server/session-api.ts"],"names":[],"mappings":"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","sourcesContent":["import { resolve } from \"node:path\";\nimport {\n\ttype MaestroAppServerClientRequest,\n\ttype MaestroAppServerCommandExecResult,\n\ttype MaestroAppServerCommandProcessResult,\n\ttype MaestroAppServerDaemonStatusResult,\n\ttype MaestroAppServerEmptyResult,\n\ttype MaestroAppServerExternalAgentImportResult,\n\ttype MaestroAppServerFsMetadataResult,\n\ttype MaestroAppServerFsReadDirectoryResult,\n\ttype MaestroAppServerFsReadFileResult,\n\ttype MaestroAppServerFsWatchResult,\n\ttype MaestroAppServerModel,\n\ttype MaestroAppServerModelListResult,\n\ttype MaestroAppServerModelProviderCapabilities,\n\ttype MaestroAppServerModelProviderCapabilitiesReadResult,\n\ttype MaestroAppServerNetworkAuditListResult,\n\ttype MaestroAppServerNetworkFetchResult,\n\ttype MaestroAppServerPluginBundleListResult,\n\ttype MaestroAppServerPluginBundleMutationResult,\n\ttype MaestroAppServerPolicyCheckResult,\n\ttype MaestroAppServerPolicyReadResult,\n\ttype MaestroAppServerProtocolModeListResult,\n\ttype MaestroAppServerProtocolModeSetResult,\n\ttype MaestroAppServerRemoteControlDrainResult,\n\ttype MaestroAppServerRemoteControlLeaseResult,\n\ttype MaestroAppServerRemoteControlStatusResult,\n\ttype MaestroAppServerRequirementsListResult,\n\ttype MaestroAppServerResponse,\n\ttype MaestroAppServerSandboxProbeResult,\n\ttype MaestroAppServerSandboxProofResult,\n\ttype MaestroAppServerServerNotification,\n\ttype MaestroAppServerThread,\n\ttype MaestroAppServerThreadArchiveResult,\n\ttype MaestroAppServerThreadDeleteResult,\n\ttype MaestroAppServerThreadForkResult,\n\ttype MaestroAppServerThreadGoal,\n\ttype MaestroAppServerThreadGoalResult,\n\ttype MaestroAppServerThreadGraph,\n\ttype MaestroAppServerThreadItem,\n\ttype MaestroAppServerThreadListResult,\n\ttype MaestroAppServerThreadMetadataUpdateResult,\n\ttype MaestroAppServerThreadStartResult,\n\ttype MaestroAppServerThreadSummary,\n\ttype MaestroAppServerTurn,\n\ttype MaestroAppServerTurnsListResult,\n\tmaestroAppServerClientMethods,\n\tmaestroAppServerProtocolVersion,\n\tmaestroAppServerSupportedProtocolVersions,\n} from \"@evalops/contracts\";\nimport type { AppMessage } from \"../agent/types.js\";\nimport { getRegisteredModels } from \"../models/registry.js\";\nimport type { RegisteredModel } from \"../models/registry.js\";\nimport type { SessionManager } from \"../session/manager.js\";\nimport { safeReadSessionEntries } from \"../session/session-context.js\";\nimport {\n\ttype SessionGraphProjection,\n\tbuildSessionGraphProjection,\n} from \"../session/session-graph-projection.js\";\nimport type {\n\tSessionEntry,\n\tSessionMessagesView,\n\tSessionMetadata,\n\tSessionSummary,\n\tSessionTreeEntry,\n} from \"../session/types.js\";\nimport {\n\ttype MaestroAppServerDaemonLifecycle,\n\tMaestroAppServerDaemonLifecycleError,\n\tcreateMaestroAppServerDaemonLifecycle,\n} from \"./daemon-lifecycle-api.js\";\nimport {\n\ttype MaestroAppServerExternalAgentImport,\n\tMaestroAppServerExternalAgentImportError,\n\tcreateMaestroAppServerExternalAgentImport,\n\tnormalizeExternalAgentImportParams,\n} from \"./external-agent-import-api.js\";\nimport {\n\ttype MaestroAppServerHostControl,\n\tMaestroAppServerHostControlError,\n\tcreateMaestroAppServerHostControl,\n} from \"./host-control-api.js\";\nimport {\n\ttype MaestroAppServerNetworkGovernance,\n\tMaestroAppServerNetworkGovernanceError,\n\tcreateMaestroAppServerNetworkGovernance,\n} from \"./network-governance-api.js\";\nimport {\n\ttype MaestroAppServerPluginBundleApi,\n\tMaestroAppServerPluginBundleError,\n\tcreateMaestroAppServerPluginBundleApi,\n} from \"./plugin-bundle-api.js\";\nimport {\n\ttype MaestroAppServerPolicyControl,\n\tMaestroAppServerPolicyControlError,\n\tcreateMaestroAppServerPolicyControl,\n} from \"./policy-control-api.js\";\nimport {\n\ttype MaestroAppServerProtocolModeDecision,\n\ttype MaestroAppServerProtocolModes,\n\tMaestroAppServerProtocolModesError,\n\tcreateMaestroAppServerProtocolModes,\n} from \"./protocol-modes-api.js\";\nimport {\n\ttype MaestroAppServerSandboxProof,\n\tMaestroAppServerSandboxProofError,\n\tcreateMaestroAppServerSandboxProof,\n\tnormalizeSandboxProofParams,\n} from \"./sandbox-proof-api.js\";\n\nconst DEFAULT_PAGE_LIMIT = 50;\nconst MAX_PAGE_LIMIT = 100;\n\nexport type { MaestroAppServerServerNotification };\nexport {\n\ttype MaestroAppServerDaemonLifecycle,\n\tcreateMaestroAppServerDaemonLifecycle,\n} from \"./daemon-lifecycle-api.js\";\nexport {\n\ttype MaestroAppServerExternalAgentImport,\n\tcreateMaestroAppServerExternalAgentImport,\n} from \"./external-agent-import-api.js\";\nexport {\n\ttype MaestroAppServerPluginBundleApi,\n\tcreateMaestroAppServerPluginBundleApi,\n} from \"./plugin-bundle-api.js\";\nexport {\n\ttype MaestroAppServerProtocolModes,\n\tcreateMaestroAppServerProtocolModes,\n} from \"./protocol-modes-api.js\";\nexport {\n\ttype MaestroAppServerSandboxProof,\n\tcreateMaestroAppServerSandboxProof,\n} from \"./sandbox-proof-api.js\";\n\ntype JsonRpcId = string | number;\ntype MaybePromise<T> = T | Promise<T>;\n\ntype SessionStore = Pick<\n\tSessionManager,\n\t\"getSessionFileById\" | \"loadAllSessions\" | \"listSessions\" | \"loadSession\"\n> & {\n\tgetSessionFile?: () => string;\n\tloadEntries?: (sessionId: string) => Promise<SessionEntry[] | null>;\n\tflush?: () => Promise<void>;\n\tsaveSessionSummary?: (\n\t\tsummary: string,\n\t\tsessionPath?: string,\n\t) => MaybePromise<void>;\n\tsaveSessionResumeSummary?: (\n\t\tsummary: string,\n\t\tsessionPath?: string,\n\t) => MaybePromise<void>;\n\tsetSessionFavorite?: (\n\t\tsessionPath: string,\n\t\tfavorite: boolean,\n\t) => MaybePromise<void>;\n\tsetSessionTitle?: (sessionPath: string, title: string) => MaybePromise<void>;\n\tsetSessionTags?: (sessionPath: string, tags: string[]) => MaybePromise<void>;\n\tsetSessionArchived?: (\n\t\tsessionPath: string,\n\t\tarchived: boolean,\n\t) => MaybePromise<void>;\n\tsetSessionAppServerGoal?: (\n\t\tsessionPath: string,\n\t\tgoal: MaestroAppServerThreadGoal | null,\n\t) => MaybePromise<void>;\n\tcreateSession?: (options?: { title?: string }) => Promise<{\n\t\tid: string;\n\t\ttitle?: string;\n\t\tcreatedAt: string;\n\t\tupdatedAt: string;\n\t\tmessageCount: number;\n\t}>;\n\tcanCreateSession?: () => boolean;\n\tcreateBranchedSession?: (leafId: string) => string;\n\tsetSessionFile?: (path: string) => MaybePromise<void>;\n\tresumeSession?: (sessionId: string) => Promise<boolean>;\n\tgetLeafId?: () => string | null;\n\tgetCurrentLeafId?: () => string | null;\n\tbranch?: (branchFromId: string) => MaybePromise<void>;\n\tresetLeaf?: () => MaybePromise<void>;\n\tdeleteSession?: (sessionId: string) => MaybePromise<void>;\n\timportSessionEntries?: (entries: SessionEntry[]) => {\n\t\tsessionFile: string;\n\t\tsessionId: string;\n\t\timportedCount: number;\n\t};\n\timportPortableSession?: (path: string) => {\n\t\tsessionFile: string;\n\t\tsessionId: string;\n\t\timportedCount: number;\n\t};\n};\n\nexport interface MaestroAppServerSessionApiOptions {\n\thostControl?: MaestroAppServerHostControl | false;\n\tpolicyControl?: MaestroAppServerPolicyControl | false;\n\tnetworkGovernance?: MaestroAppServerNetworkGovernance | false;\n\tsandboxProof?: MaestroAppServerSandboxProof | false;\n\texternalAgentImport?: MaestroAppServerExternalAgentImport | false;\n\tpluginBundles?: MaestroAppServerPluginBundleApi | false;\n\tdaemonLifecycle?: MaestroAppServerDaemonLifecycle | false;\n\tprotocolModes?: MaestroAppServerProtocolModes | false;\n\tonNotification?: (notification: MaestroAppServerServerNotification) => void;\n}\n\nexport interface MaestroAppServerSessionApi {\n\tinitialize(): MaestroAppServerResponse[\"result\"];\n\tcheckProtocolMode(\n\t\tmethod: (typeof maestroAppServerClientMethods)[number],\n\t): MaestroAppServerProtocolModeDecision;\n\tlistProtocolModes(\n\t\tparams?: Record<string, unknown>,\n\t): Promise<MaestroAppServerProtocolModeListResult>;\n\tsetProtocolMode(\n\t\tparams?: Record<string, unknown>,\n\t): Promise<MaestroAppServerProtocolModeSetResult>;\n\tlistModels(\n\t\tparams?: Record<string, unknown>,\n\t): Promise<MaestroAppServerModelListResult>;\n\treadModelProviderCapabilities(\n\t\tparams?: Record<string, unknown>,\n\t): Promise<MaestroAppServerModelProviderCapabilitiesReadResult>;\n\treadPolicy(\n\t\tparams?: Record<string, unknown>,\n\t): Promise<MaestroAppServerPolicyReadResult>;\n\tcheckPolicy(\n\t\tparams?: Record<string, unknown>,\n\t): Promise<MaestroAppServerPolicyCheckResult>;\n\tlistRequirements(\n\t\tparams?: Record<string, unknown>,\n\t): Promise<MaestroAppServerRequirementsListResult>;\n\tfetchNetwork(\n\t\tparams?: Record<string, unknown>,\n\t): Promise<MaestroAppServerNetworkFetchResult>;\n\tlistNetworkAudit(\n\t\tparams?: Record<string, unknown>,\n\t): Promise<MaestroAppServerNetworkAuditListResult>;\n\tprobeSandbox(\n\t\tparams?: Record<string, unknown>,\n\t): Promise<MaestroAppServerSandboxProbeResult>;\n\trunSandboxProof(\n\t\tparams?: Record<string, unknown>,\n\t): Promise<MaestroAppServerSandboxProofResult>;\n\timportExternalAgent(\n\t\tparams?: Record<string, unknown>,\n\t): Promise<MaestroAppServerExternalAgentImportResult>;\n\tlistPluginBundles(\n\t\tparams?: Record<string, unknown>,\n\t): Promise<MaestroAppServerPluginBundleListResult>;\n\tinstallPluginBundle(\n\t\tparams?: Record<string, unknown>,\n\t): Promise<MaestroAppServerPluginBundleMutationResult>;\n\tremovePluginBundle(\n\t\tparams?: Record<string, unknown>,\n\t): Promise<MaestroAppServerPluginBundleMutationResult>;\n\treadDaemonStatus(\n\t\tparams?: Record<string, unknown>,\n\t): Promise<MaestroAppServerDaemonStatusResult>;\n\treadRemoteControlStatus(\n\t\tparams?: Record<string, unknown>,\n\t): Promise<MaestroAppServerRemoteControlStatusResult>;\n\treadRemoteControlLease(\n\t\tparams?: Record<string, unknown>,\n\t): Promise<MaestroAppServerRemoteControlLeaseResult>;\n\theartbeatRemoteControlLease(\n\t\tparams?: Record<string, unknown>,\n\t): Promise<MaestroAppServerRemoteControlLeaseResult>;\n\tdrainRemoteControl(\n\t\tparams?: Record<string, unknown>,\n\t): Promise<MaestroAppServerRemoteControlDrainResult>;\n\texecCommand(\n\t\tparams?: Record<string, unknown>,\n\t): Promise<MaestroAppServerCommandExecResult>;\n\twriteCommandStdin(\n\t\tparams?: Record<string, unknown>,\n\t): Promise<MaestroAppServerCommandProcessResult>;\n\tterminateCommand(\n\t\tparams?: Record<string, unknown>,\n\t): Promise<MaestroAppServerCommandProcessResult>;\n\treadFile(\n\t\tparams?: Record<string, unknown>,\n\t): Promise<MaestroAppServerFsReadFileResult>;\n\twriteFile(\n\t\tparams?: Record<string, unknown>,\n\t): Promise<MaestroAppServerEmptyResult>;\n\treadDirectory(\n\t\tparams?: Record<string, unknown>,\n\t): Promise<MaestroAppServerFsReadDirectoryResult>;\n\tgetMetadata(\n\t\tparams?: Record<string, unknown>,\n\t): Promise<MaestroAppServerFsMetadataResult>;\n\tcreateDirectory(\n\t\tparams?: Record<string, unknown>,\n\t): Promise<MaestroAppServerEmptyResult>;\n\tremove(\n\t\tparams?: Record<string, unknown>,\n\t): Promise<MaestroAppServerEmptyResult>;\n\tcopy(params?: Record<string, unknown>): Promise<MaestroAppServerEmptyResult>;\n\twatch(\n\t\tparams?: Record<string, unknown>,\n\t): Promise<MaestroAppServerFsWatchResult>;\n\tunwatch(\n\t\tparams?: Record<string, unknown>,\n\t): Promise<MaestroAppServerEmptyResult>;\n\tlistThreads(\n\t\tparams?: Record<string, unknown>,\n\t): Promise<MaestroAppServerThreadListResult>;\n\treadThread(params?: Record<string, unknown>): Promise<MaestroAppServerThread>;\n\tupdateThreadMetadata(\n\t\tparams?: Record<string, unknown>,\n\t): Promise<MaestroAppServerThreadMetadataUpdateResult>;\n\tsetThreadName(\n\t\tparams?: Record<string, unknown>,\n\t): Promise<MaestroAppServerThreadMetadataUpdateResult>;\n\tgetThreadGoal(\n\t\tparams?: Record<string, unknown>,\n\t): Promise<MaestroAppServerThreadGoalResult>;\n\tsetThreadGoal(\n\t\tparams?: Record<string, unknown>,\n\t): Promise<MaestroAppServerThreadGoalResult>;\n\tclearThreadGoal(\n\t\tparams?: Record<string, unknown>,\n\t): Promise<MaestroAppServerThreadGoalResult>;\n\tstartThread(\n\t\tparams?: Record<string, unknown>,\n\t): Promise<MaestroAppServerThreadStartResult>;\n\tforkThread(\n\t\tparams?: Record<string, unknown>,\n\t): Promise<MaestroAppServerThreadForkResult>;\n\tarchiveThread(\n\t\tparams?: Record<string, unknown>,\n\t): Promise<MaestroAppServerThreadArchiveResult>;\n\tunarchiveThread(\n\t\tparams?: Record<string, unknown>,\n\t): Promise<MaestroAppServerThreadArchiveResult>;\n\tdeleteThread(\n\t\tparams?: Record<string, unknown>,\n\t): Promise<MaestroAppServerThreadDeleteResult>;\n\tlistTurns(\n\t\tparams?: Record<string, unknown>,\n\t): Promise<MaestroAppServerTurnsListResult>;\n}\n\nexport class MaestroAppServerError extends Error {\n\tconstructor(\n\t\treadonly code: number,\n\t\tmessage: string,\n\t) {\n\t\tsuper(message);\n\t\tthis.name = \"MaestroAppServerError\";\n\t}\n}\n\nfunction normalizeLimit(value: unknown): number {\n\tif (typeof value !== \"number\" || !Number.isFinite(value)) {\n\t\treturn DEFAULT_PAGE_LIMIT;\n\t}\n\treturn Math.min(MAX_PAGE_LIMIT, Math.max(1, Math.trunc(value)));\n}\n\nfunction encodeCursor(offset: number): string {\n\treturn Buffer.from(JSON.stringify({ offset }), \"utf8\").toString(\"base64url\");\n}\n\nfunction decodeCursor(value: unknown): number {\n\tif (value === undefined || value === null || value === \"\") {\n\t\treturn 0;\n\t}\n\tif (typeof value !== \"string\") {\n\t\tthrow new MaestroAppServerError(-32602, \"Invalid cursor\");\n\t}\n\ttry {\n\t\tconst decoded = JSON.parse(\n\t\t\tBuffer.from(value, \"base64url\").toString(\"utf8\"),\n\t\t);\n\t\tif (\n\t\t\ttypeof decoded === \"object\" &&\n\t\t\tdecoded !== null &&\n\t\t\ttypeof decoded.offset === \"number\" &&\n\t\t\tNumber.isFinite(decoded.offset) &&\n\t\t\tdecoded.offset >= 0\n\t\t) {\n\t\t\treturn Math.trunc(decoded.offset);\n\t\t}\n\t} catch {\n\t\t// Fall through to the normalized JSON-RPC error below.\n\t}\n\tthrow new MaestroAppServerError(-32602, \"Invalid cursor\");\n}\n\nfunction requireThreadId(params?: Record<string, unknown>): string {\n\tconst threadId = params?.threadId;\n\tif (typeof threadId !== \"string\" || threadId.length === 0) {\n\t\tthrow new MaestroAppServerError(-32602, \"Missing threadId\");\n\t}\n\treturn threadId;\n}\n\nfunction toThreadSummary(\n\tmetadata: SessionMetadata,\n\tsummary?: SessionSummary,\n): MaestroAppServerThreadSummary {\n\tconst archived = summary?.archived ?? metadata.archived ?? false;\n\tconst archivedAt = archived\n\t\t? (summary?.archivedAt ?? metadata.archivedAt)\n\t\t: undefined;\n\tconst thread: MaestroAppServerThreadSummary = {\n\t\tid: metadata.id,\n\t\tsource: \"session\",\n\t\tstatus: archived ? \"archived\" : \"notLoaded\",\n\t\ttitle: summary?.title ?? metadata.title ?? metadata.summary,\n\t\tsummary: metadata.summary,\n\t\tresumeSummary: summary?.resumeSummary ?? metadata.resumeSummary,\n\t\tmemoryExtractionHash:\n\t\t\tsummary?.memoryExtractionHash ?? metadata.memoryExtractionHash,\n\t\tsubject: metadata.subject,\n\t\tpath: metadata.path,\n\t\tcreatedAt: metadata.created.toISOString(),\n\t\tupdatedAt: metadata.modified.toISOString(),\n\t\tmessageCount: metadata.messageCount,\n\t\tfavorite: summary?.favorite ?? metadata.favorite,\n\t\ttags: summary?.tags ?? metadata.tags,\n\t\tarchived,\n\t};\n\tif (archivedAt) {\n\t\tthread.archivedAt = archivedAt;\n\t}\n\treturn thread;\n}\n\nfunction toThreadSummaryFromSessionSummary(\n\tsummary: SessionSummary,\n): MaestroAppServerThreadSummary {\n\tconst archived = summary.archived ?? false;\n\tconst thread: MaestroAppServerThreadSummary = {\n\t\tid: summary.id,\n\t\tsource: \"session\",\n\t\tstatus: archived ? \"archived\" : \"notLoaded\",\n\t\ttitle: summary.title ?? summary.subject,\n\t\tsummary: summary.summary ?? summary.title ?? summary.subject,\n\t\tresumeSummary: summary.resumeSummary,\n\t\tmemoryExtractionHash: summary.memoryExtractionHash,\n\t\tsubject: summary.subject,\n\t\tcreatedAt: summary.createdAt,\n\t\tupdatedAt: summary.updatedAt,\n\t\tmessageCount: summary.messageCount,\n\t\tfavorite: summary.favorite,\n\t\ttags: summary.tags,\n\t\tarchived,\n\t};\n\tif (archived && summary.archivedAt) {\n\t\tthread.archivedAt = summary.archivedAt;\n\t}\n\treturn thread;\n}\n\nfunction toThreadSummaryFromLoadedSession(loaded: {\n\tid: string;\n\tsubject?: string;\n\ttitle?: string;\n\tsummary?: string;\n\tresumeSummary?: string;\n\tmemoryExtractionHash?: string;\n\tcreatedAt: string;\n\tupdatedAt: string;\n\tmessageCount: number;\n\tfavorite: boolean;\n\ttags?: string[];\n\tarchived?: boolean;\n\tarchivedAt?: string;\n}): MaestroAppServerThreadSummary {\n\tconst archived = loaded.archived ?? false;\n\tconst thread: MaestroAppServerThreadSummary = {\n\t\tid: loaded.id,\n\t\tsource: \"session\",\n\t\tstatus: archived ? \"archived\" : \"notLoaded\",\n\t\ttitle: loaded.title ?? loaded.subject,\n\t\tsummary: loaded.summary ?? loaded.title ?? loaded.subject,\n\t\tresumeSummary: loaded.resumeSummary,\n\t\tmemoryExtractionHash: loaded.memoryExtractionHash,\n\t\tsubject: loaded.subject,\n\t\tcreatedAt: loaded.createdAt,\n\t\tupdatedAt: loaded.updatedAt,\n\t\tmessageCount: loaded.messageCount,\n\t\tfavorite: loaded.favorite,\n\t\ttags: loaded.tags,\n\t\tarchived,\n\t};\n\tif (archived && loaded.archivedAt) {\n\t\tthread.archivedAt = loaded.archivedAt;\n\t}\n\treturn thread;\n}\n\nfunction appMessageContent(message: AppMessage): unknown {\n\treturn \"content\" in message ? message.content : message;\n}\n\nfunction treeEntryToItem(entry: SessionTreeEntry): MaestroAppServerThreadItem {\n\tif (entry.type === \"message\") {\n\t\treturn {\n\t\t\tid: entry.id,\n\t\t\ttype: \"message\",\n\t\t\tparentId: entry.parentId,\n\t\t\ttimestamp: entry.timestamp,\n\t\t\trole: entry.message.role,\n\t\t\tcontent: appMessageContent(entry.message),\n\t\t};\n\t}\n\tif (entry.type === \"custom_message\") {\n\t\treturn {\n\t\t\tid: entry.id,\n\t\t\ttype: entry.customType,\n\t\t\tparentId: entry.parentId,\n\t\t\ttimestamp: entry.timestamp,\n\t\t\tcontent: entry.content,\n\t\t\tdata: entry.details,\n\t\t};\n\t}\n\treturn {\n\t\tid: entry.id,\n\t\ttype: entry.type,\n\t\tparentId: entry.parentId,\n\t\ttimestamp: entry.timestamp,\n\t\tdata: entry,\n\t};\n}\n\nexport function buildTurnsFromSessionEntries(\n\tentries: SessionEntry[],\n): MaestroAppServerTurn[] {\n\treturn turnsFromProjection(buildSessionGraphProjection(entries));\n}\n\nfunction turnsFromProjection(\n\tprojection: SessionGraphProjection,\n): MaestroAppServerTurn[] {\n\treturn projection.turns.map((turn) => ({\n\t\tid: turn.id,\n\t\tparentTurnId: turn.parentTurnId,\n\t\tstatus: turn.status,\n\t\tstartedAt: turn.startedAt,\n\t\tcompletedAt: turn.completedAt,\n\t\tsourceEntryIds: turn.sourceEntryIds,\n\t\ttoolCallIds: turn.toolCallIds,\n\t\titems: turn.entries.map(treeEntryToItem),\n\t}));\n}\n\nfunction graphFromProjection(\n\tprojection: SessionGraphProjection,\n): MaestroAppServerThreadGraph {\n\treturn {\n\t\tbranchId: projection.branchId,\n\t\tleafEntryId: projection.leafEntryId,\n\t\tactiveEntryIds: projection.activeEntryIds,\n\t\tcompactionSpans: projection.compactionSpans,\n\t};\n}\n\nfunction parseMessagesView(value: unknown): SessionMessagesView {\n\tif (value === undefined || value === null) {\n\t\treturn \"notLoaded\";\n\t}\n\tif (value === \"full\" || value === \"summary\" || value === \"notLoaded\") {\n\t\treturn value;\n\t}\n\tthrow new MaestroAppServerError(-32602, \"Invalid messagesView\");\n}\n\nfunction optionalTrimmedString(\n\tvalue: unknown,\n\tfield: string,\n): string | undefined {\n\tif (value === undefined || value === null) {\n\t\treturn undefined;\n\t}\n\tif (typeof value !== \"string\") {\n\t\tthrow new MaestroAppServerError(-32602, `Invalid ${field}`);\n\t}\n\treturn value.trim() || undefined;\n}\n\nfunction optionalBoolean(value: unknown, field: string): boolean | undefined {\n\tif (value === undefined || value === null) {\n\t\treturn undefined;\n\t}\n\tif (typeof value !== \"boolean\") {\n\t\tthrow new MaestroAppServerError(-32602, `Invalid ${field}`);\n\t}\n\treturn value;\n}\n\nfunction optionalStringArray(\n\tvalue: unknown,\n\tfield: string,\n): string[] | undefined {\n\tif (value === undefined || value === null) {\n\t\treturn undefined;\n\t}\n\tif (\n\t\t!Array.isArray(value) ||\n\t\tvalue.some((entry) => typeof entry !== \"string\")\n\t) {\n\t\tthrow new MaestroAppServerError(-32602, `Invalid ${field}`);\n\t}\n\treturn Array.from(\n\t\tnew Set(value.map((entry) => entry.trim()).filter(Boolean)),\n\t);\n}\n\nfunction requireThreadReference(store: SessionStore, threadId: string): string {\n\tconst sessionFile = store.getSessionFileById(threadId);\n\tif (!sessionFile) {\n\t\tthrow new MaestroAppServerError(-32004, \"Thread not found\");\n\t}\n\treturn sessionFile;\n}\n\nasync function requireExistingThreadReference(\n\tstore: SessionStore,\n\tthreadId: string,\n): Promise<string> {\n\tconst sessionFile = requireThreadReference(store, threadId);\n\tconst loaded = await store.loadSession(threadId, {\n\t\tmessagesView: \"notLoaded\",\n\t});\n\tif (!loaded) {\n\t\tthrow new MaestroAppServerError(-32004, \"Thread not found\");\n\t}\n\treturn sessionFile;\n}\n\nasync function flushSessionWrites(store: SessionStore): Promise<void> {\n\tawait store.flush?.();\n}\n\nasync function restoreSessionBinding(\n\tstore: SessionStore,\n\tsessionReference: string | undefined,\n\tleafId?: string | null,\n): Promise<void> {\n\tif (!sessionReference) {\n\t\treturn;\n\t}\n\tconst dbSessionId = sessionReference.startsWith(\"db:\")\n\t\t? sessionReference.slice(\"db:\".length)\n\t\t: undefined;\n\tlet restored = false;\n\tif (dbSessionId && store.resumeSession) {\n\t\trestored = await store.resumeSession(dbSessionId);\n\t}\n\tif (!restored) {\n\t\tawait store.setSessionFile?.(sessionReference);\n\t}\n\tif (leafId === null) {\n\t\tawait store.resetLeaf?.();\n\t} else if (leafId && store.branch) {\n\t\tawait store.branch(leafId);\n\t}\n}\n\nfunction getCurrentLeafId(store: SessionStore): string | null {\n\treturn store.getLeafId?.() ?? store.getCurrentLeafId?.() ?? null;\n}\n\nfunction isActiveThreadSessionFile(\n\tstore: SessionStore,\n\tsessionFile: string,\n): boolean {\n\tconst activeSessionFile = store.getSessionFile?.();\n\tif (!activeSessionFile) {\n\t\treturn false;\n\t}\n\treturn resolve(activeSessionFile) === resolve(sessionFile);\n}\n\ninterface ThreadMetadataExpectation {\n\ttitle?: string;\n\tsummary?: string;\n\tresumeSummary?: string;\n\tfavorite?: boolean;\n\ttags?: string[];\n}\n\nasync function summarizeThreadAfterMutation(\n\tstore: SessionStore,\n\tthreadId: string,\n): Promise<MaestroAppServerThreadSummary> {\n\tawait flushSessionWrites(store);\n\tconst loaded = await store.loadSession(threadId, {\n\t\tmessagesView: \"notLoaded\",\n\t});\n\tif (!loaded) {\n\t\tthrow new MaestroAppServerError(-32004, \"Thread not found\");\n\t}\n\tconst summary = toThreadSummaryFromLoadedSession(loaded);\n\tconst sessionFile = store.getSessionFileById(threadId);\n\tif (sessionFile && !sessionFile.startsWith(\"db:\")) {\n\t\tsummary.path = sessionFile;\n\t}\n\treturn summary;\n}\n\nfunction tagsEqual(left: string[] | undefined, right: string[] | undefined) {\n\tif (left === undefined || right === undefined) {\n\t\treturn left === right;\n\t}\n\treturn (\n\t\tleft.length === right.length &&\n\t\tleft.every((value, index) => value === right[index])\n\t);\n}\n\nfunction verifyThreadMetadataPersisted(\n\tthread: MaestroAppServerThreadSummary,\n\texpected: ThreadMetadataExpectation,\n): void {\n\tconst persisted =\n\t\t(expected.title === undefined || thread.title === expected.title) &&\n\t\t(expected.summary === undefined || thread.summary === expected.summary) &&\n\t\t(expected.resumeSummary === undefined ||\n\t\t\tthread.resumeSummary === expected.resumeSummary) &&\n\t\t(expected.favorite === undefined ||\n\t\t\tthread.favorite === expected.favorite) &&\n\t\t(expected.tags === undefined || tagsEqual(thread.tags, expected.tags));\n\tif (!persisted) {\n\t\tthrow new MaestroAppServerError(\n\t\t\t-32000,\n\t\t\t\"Thread metadata update was not persisted\",\n\t\t);\n\t}\n}\n\nfunction latestGoalFromEntries(\n\tentries: SessionEntry[],\n): MaestroAppServerThreadGoal | null {\n\tlet goal: MaestroAppServerThreadGoal | null = null;\n\tfor (const entry of entries) {\n\t\tif (entry.type !== \"session_meta\" || entry.appServerGoal === undefined) {\n\t\t\tcontinue;\n\t\t}\n\t\tgoal = entry.appServerGoal;\n\t}\n\treturn goal;\n}\n\nfunction goalsEqual(\n\tactual: MaestroAppServerThreadGoal | null,\n\texpected: MaestroAppServerThreadGoal | null,\n): boolean {\n\tif (actual === null || expected === null) {\n\t\treturn actual === expected;\n\t}\n\treturn (\n\t\tactual.objective === expected.objective &&\n\t\tactual.status === expected.status &&\n\t\tactual.tokenBudget === expected.tokenBudget &&\n\t\tactual.createdAt === expected.createdAt &&\n\t\tactual.updatedAt === expected.updatedAt\n\t);\n}\n\nasync function verifyThreadGoalPersisted(\n\tstore: SessionStore,\n\tthreadId: string,\n\texpected: MaestroAppServerThreadGoal | null,\n): Promise<MaestroAppServerThreadGoal | null> {\n\tconst persisted = await loadThreadGoal(store, threadId);\n\tif (!goalsEqual(persisted, expected)) {\n\t\tthrow new MaestroAppServerError(\n\t\t\t-32000,\n\t\t\t\"Thread goal update was not persisted\",\n\t\t);\n\t}\n\treturn persisted;\n}\n\nfunction normalizeGoalStatus(\n\tvalue: unknown,\n): MaestroAppServerThreadGoal[\"status\"] {\n\tif (value === undefined || value === null) {\n\t\treturn \"active\";\n\t}\n\tif (value === \"active\" || value === \"complete\" || value === \"cancelled\") {\n\t\treturn value;\n\t}\n\tthrow new MaestroAppServerError(-32602, \"Invalid status\");\n}\n\nfunction normalizeTokenBudget(value: unknown): number | undefined {\n\tif (value === undefined || value === null) {\n\t\treturn undefined;\n\t}\n\tif (\n\t\ttypeof value !== \"number\" ||\n\t\t!Number.isFinite(value) ||\n\t\tvalue <= 0 ||\n\t\t!Number.isInteger(value)\n\t) {\n\t\tthrow new MaestroAppServerError(-32602, \"Invalid tokenBudget\");\n\t}\n\treturn value;\n}\n\nfunction modelToAppServerModel(model: RegisteredModel): MaestroAppServerModel {\n\tconst responsesApi =\n\t\tmodel.api === \"openai-responses\" || model.api === \"openai-codex-responses\";\n\tconst codexBackend =\n\t\tmodel.api === \"openai-codex-responses\" ||\n\t\tmodel.api === \"openai-codex-app-server\";\n\treturn {\n\t\tid: model.id,\n\t\tprovider: model.provider,\n\t\tname: model.name || model.id,\n\t\tapi: model.api,\n\t\tcontextWindow: model.contextWindow,\n\t\tmaxTokens: model.maxTokens,\n\t\tcost: model.cost,\n\t\tsource: model.source,\n\t\tsupportedReasoningEfforts: model.reasoning\n\t\t\t? [\"minimal\", \"low\", \"medium\", \"high\", \"ultra\"]\n\t\t\t: undefined,\n\t\tdefaultReasoningEffort: model.reasoning ? \"medium\" : undefined,\n\t\tcapabilities: {\n\t\t\tstreaming: true,\n\t\t\ttools: model.toolUse === true,\n\t\t\tvision: model.input?.includes(\"image\") || false,\n\t\t\treasoning: model.reasoning || false,\n\t\t\tresponsesApi,\n\t\t\tcodexBackend,\n\t\t\tlocal: model.isLocal,\n\t\t},\n\t};\n}\n\nfunction mergeProviderCapabilities(\n\tcurrent: MaestroAppServerModelProviderCapabilities | undefined,\n\tmodel: MaestroAppServerModel,\n\tproviderName: string,\n): MaestroAppServerModelProviderCapabilities {\n\tconst capabilities = current?.capabilities ?? {\n\t\tstreaming: false,\n\t\ttools: false,\n\t\tvision: false,\n\t\treasoning: false,\n\t\tresponsesApi: false,\n\t\tcodexBackend: false,\n\t\tlocal: false,\n\t};\n\tconst apis = new Set(current?.apis ?? []);\n\tapis.add(model.api);\n\treturn {\n\t\tid: model.provider,\n\t\tname: current?.name ?? providerName,\n\t\tapis: Array.from(apis).sort(),\n\t\tmodelCount: (current?.modelCount ?? 0) + 1,\n\t\tcapabilities: {\n\t\t\tstreaming: capabilities.streaming || model.capabilities.streaming,\n\t\t\ttools: capabilities.tools || model.capabilities.tools,\n\t\t\tvision: capabilities.vision || model.capabilities.vision,\n\t\t\treasoning: capabilities.reasoning || model.capabilities.reasoning,\n\t\t\tresponsesApi:\n\t\t\t\tcapabilities.responsesApi || model.capabilities.responsesApi,\n\t\t\tcodexBackend:\n\t\t\t\tcapabilities.codexBackend || model.capabilities.codexBackend,\n\t\t\tlocal: capabilities.local || model.capabilities.local,\n\t\t},\n\t};\n}\n\nexport function createMaestroAppServerSessionApi(\n\tstore: SessionStore,\n\toptions: MaestroAppServerSessionApiOptions = {},\n): MaestroAppServerSessionApi {\n\tconst hostControl =\n\t\toptions.hostControl === false\n\t\t\t? undefined\n\t\t\t: (options.hostControl ??\n\t\t\t\tcreateMaestroAppServerHostControl({\n\t\t\t\t\tonNotification: options.onNotification,\n\t\t\t\t}));\n\tconst policyControl =\n\t\toptions.policyControl === false\n\t\t\t? undefined\n\t\t\t: (options.policyControl ?? createMaestroAppServerPolicyControl());\n\tconst networkGovernance =\n\t\toptions.networkGovernance === false\n\t\t\t? undefined\n\t\t\t: (options.networkGovernance ??\n\t\t\t\tcreateMaestroAppServerNetworkGovernance());\n\tconst sandboxProof =\n\t\toptions.sandboxProof === false\n\t\t\t? undefined\n\t\t\t: (options.sandboxProof ?? createMaestroAppServerSandboxProof());\n\tconst pluginBundles =\n\t\toptions.pluginBundles === false\n\t\t\t? undefined\n\t\t\t: (options.pluginBundles ?? createMaestroAppServerPluginBundleApi());\n\tconst daemonLifecycle =\n\t\toptions.daemonLifecycle === false\n\t\t\t? undefined\n\t\t\t: (options.daemonLifecycle ?? createMaestroAppServerDaemonLifecycle());\n\tconst protocolModes =\n\t\toptions.protocolModes === false\n\t\t\t? undefined\n\t\t\t: (options.protocolModes ?? createMaestroAppServerProtocolModes());\n\tconst daemonLifecycleCapabilities = daemonLifecycle?.capabilities() ?? {\n\t\tdaemonStatus: false,\n\t\tremoteControlStatus: false,\n\t\tremoteControlLease: false,\n\t\tremoteControlDrain: false,\n\t};\n\tconst canUpdateThreadMetadata = Boolean(\n\t\tstore.setSessionTitle &&\n\t\t\tstore.saveSessionSummary &&\n\t\t\tstore.saveSessionResumeSummary &&\n\t\t\tstore.setSessionFavorite &&\n\t\t\tstore.setSessionTags,\n\t);\n\tconst canSetThreadName = Boolean(store.setSessionTitle);\n\tconst canUseThreadGoals = Boolean(\n\t\tstore.setSessionAppServerGoal && store.loadEntries,\n\t);\n\tconst canMutateSessionPersistence = store.canCreateSession?.() ?? true;\n\tconst externalAgentImport =\n\t\toptions.externalAgentImport === false || !canMutateSessionPersistence\n\t\t\t? undefined\n\t\t\t: (options.externalAgentImport ??\n\t\t\t\tcreateMaestroAppServerExternalAgentImport({ store }));\n\tconst canStartThreads = Boolean(\n\t\tstore.createSession && canMutateSessionPersistence,\n\t);\n\tconst canForkThreads = Boolean(\n\t\tcanMutateSessionPersistence &&\n\t\t\tstore.createBranchedSession &&\n\t\t\tstore.setSessionFile,\n\t);\n\tconst canArchiveThreads = Boolean(\n\t\tcanMutateSessionPersistence && store.setSessionArchived,\n\t);\n\tconst canDeleteThreads = Boolean(\n\t\tcanMutateSessionPersistence && store.deleteSession,\n\t);\n\tconst canUseHostControl = Boolean(hostControl);\n\tconst canUseFilesystemWatch = Boolean(hostControl?.supportsWatch());\n\tconst canUsePolicyControl = Boolean(policyControl);\n\tconst canUseNetworkGovernance = Boolean(networkGovernance);\n\tconst canUseSandboxProof = Boolean(sandboxProof);\n\tconst canUseExternalAgentImport = Boolean(externalAgentImport);\n\tconst canUsePluginBundles = Boolean(pluginBundles);\n\n\treturn {\n\t\tinitialize() {\n\t\t\treturn {\n\t\t\t\tprotocolVersion: maestroAppServerProtocolVersion,\n\t\t\t\tsupportedProtocolVersions: [\n\t\t\t\t\t...maestroAppServerSupportedProtocolVersions,\n\t\t\t\t],\n\t\t\t\tserverInfo: {\n\t\t\t\t\tname: \"maestro\",\n\t\t\t\t},\n\t\t\t\tcapabilities: {\n\t\t\t\t\tsessions: true,\n\t\t\t\t\tprotocolModes: Boolean(protocolModes),\n\t\t\t\t\tmodelList: true,\n\t\t\t\t\tmodelProviderCapabilities: true,\n\t\t\t\t\tmanagedPolicy: canUsePolicyControl,\n\t\t\t\t\trequirements: canUsePolicyControl,\n\t\t\t\t\tnetworkProxy: canUseNetworkGovernance,\n\t\t\t\t\tnetworkAudit: canUseNetworkGovernance,\n\t\t\t\t\tsandboxProbe: canUseSandboxProof,\n\t\t\t\t\tsandboxProof: canUseSandboxProof,\n\t\t\t\t\texternalAgentImport: canUseExternalAgentImport,\n\t\t\t\t\tpluginBundles: canUsePluginBundles,\n\t\t\t\t\tdaemonStatus: daemonLifecycleCapabilities.daemonStatus,\n\t\t\t\t\tremoteControlStatus: daemonLifecycleCapabilities.remoteControlStatus,\n\t\t\t\t\tremoteControlLease: daemonLifecycleCapabilities.remoteControlLease,\n\t\t\t\t\tremoteControlDrain: daemonLifecycleCapabilities.remoteControlDrain,\n\t\t\t\t\tcommandExec: canUseHostControl,\n\t\t\t\t\tcommandProcessControl: canUseHostControl,\n\t\t\t\t\tfilesystem: canUseHostControl,\n\t\t\t\t\tfilesystemWatch: canUseFilesystemWatch,\n\t\t\t\t\tthreadList: true,\n\t\t\t\t\tthreadRead: true,\n\t\t\t\t\tthreadMetadataUpdate: canUpdateThreadMetadata,\n\t\t\t\t\tthreadNameSet: canSetThreadName,\n\t\t\t\t\tthreadGoals: canUseThreadGoals,\n\t\t\t\t\tthreadStart: canStartThreads,\n\t\t\t\t\tthreadFork: canForkThreads,\n\t\t\t\t\tthreadArchive: canArchiveThreads,\n\t\t\t\t\tthreadDelete: canDeleteThreads,\n\t\t\t\t\tturnsList: true,\n\t\t\t\t},\n\t\t\t};\n\t\t},\n\n\t\tcheckProtocolMode(method) {\n\t\t\treturn protocolModes?.checkMethod(method) ?? { allowed: true };\n\t\t},\n\n\t\tasync listProtocolModes(params = {}) {\n\t\t\tif (!protocolModes) {\n\t\t\t\tthrow new MaestroAppServerError(\n\t\t\t\t\t-32601,\n\t\t\t\t\t\"Protocol modes are not available\",\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn protocolModes.listModes(params);\n\t\t},\n\n\t\tasync setProtocolMode(params = {}) {\n\t\t\tif (!protocolModes) {\n\t\t\t\tthrow new MaestroAppServerError(\n\t\t\t\t\t-32601,\n\t\t\t\t\t\"Protocol modes are not available\",\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn protocolModes.setMode(params);\n\t\t},\n\n\t\tasync readPolicy() {\n\t\t\tif (!policyControl) {\n\t\t\t\tthrow new MaestroAppServerError(\n\t\t\t\t\t-32601,\n\t\t\t\t\t\"Managed policy is not available\",\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn policyControl.readPolicy();\n\t\t},\n\n\t\tasync checkPolicy(params = {}) {\n\t\t\tif (!policyControl) {\n\t\t\t\tthrow new MaestroAppServerError(\n\t\t\t\t\t-32601,\n\t\t\t\t\t\"Managed policy is not available\",\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn policyControl.checkPolicy(params);\n\t\t},\n\n\t\tasync listRequirements() {\n\t\t\tif (!policyControl) {\n\t\t\t\tthrow new MaestroAppServerError(\n\t\t\t\t\t-32601,\n\t\t\t\t\t\"Requirements are not available\",\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn policyControl.listRequirements();\n\t\t},\n\n\t\tasync fetchNetwork(params = {}) {\n\t\t\tif (!networkGovernance) {\n\t\t\t\tthrow new MaestroAppServerError(\n\t\t\t\t\t-32601,\n\t\t\t\t\t\"Network proxy is not available\",\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn networkGovernance.fetch(params);\n\t\t},\n\n\t\tasync listNetworkAudit(params = {}) {\n\t\t\tif (!networkGovernance) {\n\t\t\t\tthrow new MaestroAppServerError(\n\t\t\t\t\t-32601,\n\t\t\t\t\t\"Network audit is not available\",\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn networkGovernance.listAudit(params);\n\t\t},\n\n\t\tasync probeSandbox(params = {}) {\n\t\t\tif (!sandboxProof) {\n\t\t\t\tthrow new MaestroAppServerError(\n\t\t\t\t\t-32601,\n\t\t\t\t\t\"Sandbox probe is not available\",\n\t\t\t\t);\n\t\t\t}\n\t\t\tnormalizeSandboxProofParams(params);\n\t\t\treturn sandboxProof.probe();\n\t\t},\n\n\t\tasync runSandboxProof(params = {}) {\n\t\t\tif (!sandboxProof) {\n\t\t\t\tthrow new MaestroAppServerError(\n\t\t\t\t\t-32601,\n\t\t\t\t\t\"Sandbox proof is not available\",\n\t\t\t\t);\n\t\t\t}\n\t\t\tconst normalizedParams = normalizeSandboxProofParams(params);\n\t\t\treturn sandboxProof.runProof(normalizedParams);\n\t\t},\n\n\t\tasync importExternalAgent(params = {}) {\n\t\t\tif (!externalAgentImport) {\n\t\t\t\tthrow new MaestroAppServerError(\n\t\t\t\t\t-32601,\n\t\t\t\t\t\"External agent import is not available\",\n\t\t\t\t);\n\t\t\t}\n\t\t\tconst normalizedParams = normalizeExternalAgentImportParams(params);\n\t\t\treturn externalAgentImport.importBundle(normalizedParams);\n\t\t},\n\n\t\tasync listPluginBundles(params = {}) {\n\t\t\tif (!pluginBundles) {\n\t\t\t\tthrow new MaestroAppServerError(\n\t\t\t\t\t-32601,\n\t\t\t\t\t\"Plugin bundle lifecycle is not available\",\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn pluginBundles.listBundles(params);\n\t\t},\n\n\t\tasync installPluginBundle(params = {}) {\n\t\t\tif (!pluginBundles) {\n\t\t\t\tthrow new MaestroAppServerError(\n\t\t\t\t\t-32601,\n\t\t\t\t\t\"Plugin bundle lifecycle is not available\",\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn pluginBundles.installBundle(params);\n\t\t},\n\n\t\tasync removePluginBundle(params = {}) {\n\t\t\tif (!pluginBundles) {\n\t\t\t\tthrow new MaestroAppServerError(\n\t\t\t\t\t-32601,\n\t\t\t\t\t\"Plugin bundle lifecycle is not available\",\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn pluginBundles.removeBundle(params);\n\t\t},\n\n\t\tasync readDaemonStatus(params = {}) {\n\t\t\tif (!daemonLifecycle) {\n\t\t\t\tthrow new MaestroAppServerError(\n\t\t\t\t\t-32601,\n\t\t\t\t\t\"Daemon lifecycle is not available\",\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn daemonLifecycle.status(params);\n\t\t},\n\n\t\tasync readRemoteControlStatus(params = {}) {\n\t\t\tif (!daemonLifecycle) {\n\t\t\t\tthrow new MaestroAppServerError(\n\t\t\t\t\t-32601,\n\t\t\t\t\t\"Remote control lifecycle is not available\",\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn daemonLifecycle.remoteControlStatus(params);\n\t\t},\n\n\t\tasync readRemoteControlLease(params = {}) {\n\t\t\tif (!daemonLifecycle) {\n\t\t\t\tthrow new MaestroAppServerError(\n\t\t\t\t\t-32601,\n\t\t\t\t\t\"Remote control lease is not available\",\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn daemonLifecycle.readLease(params);\n\t\t},\n\n\t\tasync heartbeatRemoteControlLease(params = {}) {\n\t\t\tif (!daemonLifecycle) {\n\t\t\t\tthrow new MaestroAppServerError(\n\t\t\t\t\t-32601,\n\t\t\t\t\t\"Remote control lease is not available\",\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn daemonLifecycle.heartbeatLease(params);\n\t\t},\n\n\t\tasync drainRemoteControl(params = {}) {\n\t\t\tif (!daemonLifecycle) {\n\t\t\t\tthrow new MaestroAppServerError(\n\t\t\t\t\t-32601,\n\t\t\t\t\t\"Remote control drain is not available\",\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn daemonLifecycle.drain(params);\n\t\t},\n\n\t\tasync execCommand(params = {}) {\n\t\t\tif (!hostControl) {\n\t\t\t\tthrow new MaestroAppServerError(\n\t\t\t\t\t-32601,\n\t\t\t\t\t\"Command exec is not available\",\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn hostControl.execCommand(params);\n\t\t},\n\n\t\tasync writeCommandStdin(params = {}) {\n\t\t\tif (!hostControl) {\n\t\t\t\tthrow new MaestroAppServerError(\n\t\t\t\t\t-32601,\n\t\t\t\t\t\"Command process control is not available\",\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn hostControl.writeCommandStdin(params);\n\t\t},\n\n\t\tasync terminateCommand(params = {}) {\n\t\t\tif (!hostControl) {\n\t\t\t\tthrow new MaestroAppServerError(\n\t\t\t\t\t-32601,\n\t\t\t\t\t\"Command process control is not available\",\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn hostControl.terminateCommand(params);\n\t\t},\n\n\t\tasync readFile(params = {}) {\n\t\t\tif (!hostControl) {\n\t\t\t\tthrow new MaestroAppServerError(-32601, \"Filesystem is not available\");\n\t\t\t}\n\t\t\treturn hostControl.readFile(params);\n\t\t},\n\n\t\tasync writeFile(params = {}) {\n\t\t\tif (!hostControl) {\n\t\t\t\tthrow new MaestroAppServerError(-32601, \"Filesystem is not available\");\n\t\t\t}\n\t\t\treturn hostControl.writeFile(params);\n\t\t},\n\n\t\tasync readDirectory(params = {}) {\n\t\t\tif (!hostControl) {\n\t\t\t\tthrow new MaestroAppServerError(-32601, \"Filesystem is not available\");\n\t\t\t}\n\t\t\treturn hostControl.readDirectory(params);\n\t\t},\n\n\t\tasync getMetadata(params = {}) {\n\t\t\tif (!hostControl) {\n\t\t\t\tthrow new MaestroAppServerError(-32601, \"Filesystem is not available\");\n\t\t\t}\n\t\t\treturn hostControl.getMetadata(params);\n\t\t},\n\n\t\tasync createDirectory(params = {}) {\n\t\t\tif (!hostControl) {\n\t\t\t\tthrow new MaestroAppServerError(-32601, \"Filesystem is not available\");\n\t\t\t}\n\t\t\treturn hostControl.createDirectory(params);\n\t\t},\n\n\t\tasync remove(params = {}) {\n\t\t\tif (!hostControl) {\n\t\t\t\tthrow new MaestroAppServerError(-32601, \"Filesystem is not available\");\n\t\t\t}\n\t\t\treturn hostControl.remove(params);\n\t\t},\n\n\t\tasync copy(params = {}) {\n\t\t\tif (!hostControl) {\n\t\t\t\tthrow new MaestroAppServerError(-32601, \"Filesystem is not available\");\n\t\t\t}\n\t\t\treturn hostControl.copy(params);\n\t\t},\n\n\t\tasync watch(params = {}) {\n\t\t\tif (!hostControl) {\n\t\t\t\tthrow new MaestroAppServerError(\n\t\t\t\t\t-32601,\n\t\t\t\t\t\"Filesystem watch is not available\",\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn hostControl.watch(params);\n\t\t},\n\n\t\tasync unwatch(params = {}) {\n\t\t\tif (!hostControl) {\n\t\t\t\tthrow new MaestroAppServerError(\n\t\t\t\t\t-32601,\n\t\t\t\t\t\"Filesystem watch is not available\",\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn hostControl.unwatch(params);\n\t\t},\n\n\t\tasync listModels(params = {}) {\n\t\t\tconst provider = optionalTrimmedString(params.provider, \"provider\");\n\t\t\tconst api = optionalTrimmedString(params.api, \"api\");\n\t\t\tconst models = getRegisteredModels()\n\t\t\t\t.filter((model) => !provider || model.provider === provider)\n\t\t\t\t.filter((model) => !api || model.api === api)\n\t\t\t\t.map(modelToAppServerModel)\n\t\t\t\t.sort((left, right) =>\n\t\t\t\t\t`${left.provider}/${left.id}`.localeCompare(\n\t\t\t\t\t\t`${right.provider}/${right.id}`,\n\t\t\t\t\t),\n\t\t\t\t);\n\t\t\treturn { models };\n\t\t},\n\n\t\tasync readModelProviderCapabilities(params = {}) {\n\t\t\tconst provider = optionalTrimmedString(params.provider, \"provider\");\n\t\t\tconst providers = new Map<\n\t\t\t\tstring,\n\t\t\t\tMaestroAppServerModelProviderCapabilities\n\t\t\t>();\n\t\t\tfor (const model of getRegisteredModels()) {\n\t\t\t\tif (provider && model.provider !== provider) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tconst appServerModel = modelToAppServerModel(model);\n\t\t\t\tproviders.set(\n\t\t\t\t\tmodel.provider,\n\t\t\t\t\tmergeProviderCapabilities(\n\t\t\t\t\t\tproviders.get(model.provider),\n\t\t\t\t\t\tappServerModel,\n\t\t\t\t\t\tmodel.providerName || model.provider,\n\t\t\t\t\t),\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn {\n\t\t\t\tproviders: Array.from(providers.values()).sort((left, right) =>\n\t\t\t\t\tleft.id.localeCompare(right.id),\n\t\t\t\t),\n\t\t\t};\n\t\t},\n\n\t\tasync listThreads(params = {}) {\n\t\t\tconst limit = normalizeLimit(params.limit);\n\t\t\tconst offset = decodeCursor(params.cursor);\n\t\t\tconst includeArchived =\n\t\t\t\toptionalBoolean(params.includeArchived, \"includeArchived\") ?? false;\n\t\t\tconst metadata = store.loadAllSessions();\n\t\t\tif (metadata.length === 0) {\n\t\t\t\tconst page: SessionSummary[] = [];\n\t\t\t\tlet rawOffset = offset;\n\t\t\t\tlet cursorAfterPage = offset;\n\t\t\t\tlet hasMoreVisible = false;\n\t\t\t\tlet exhausted = false;\n\t\t\t\twhile (!hasMoreVisible && !exhausted) {\n\t\t\t\t\tconst summaries = await store.listSessions({\n\t\t\t\t\t\tlimit: limit + 1,\n\t\t\t\t\t\toffset: rawOffset,\n\t\t\t\t\t});\n\t\t\t\t\texhausted = summaries.length <= limit;\n\t\t\t\t\tfor (const summary of summaries) {\n\t\t\t\t\t\trawOffset += 1;\n\t\t\t\t\t\tif (includeArchived || !summary.archived) {\n\t\t\t\t\t\t\tif (page.length < limit) {\n\t\t\t\t\t\t\t\tpage.push(summary);\n\t\t\t\t\t\t\t\tcursorAfterPage = rawOffset;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\thasMoreVisible = true;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (summaries.length === 0) {\n\t\t\t\t\t\texhausted = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn {\n\t\t\t\t\tthreads: page.map(toThreadSummaryFromSessionSummary),\n\t\t\t\t\tnextCursor: hasMoreVisible ? encodeCursor(cursorAfterPage) : null,\n\t\t\t\t};\n\t\t\t}\n\t\t\tconst visible = includeArchived\n\t\t\t\t? metadata\n\t\t\t\t: metadata.filter((session) => !session.archived);\n\t\t\tconst page = visible.slice(offset, offset + limit);\n\t\t\tconst nextOffset = offset + page.length;\n\t\t\treturn {\n\t\t\t\tthreads: page.map((session) => toThreadSummary(session)),\n\t\t\t\tnextCursor:\n\t\t\t\t\tnextOffset < visible.length ? encodeCursor(nextOffset) : null,\n\t\t\t};\n\t\t},\n\n\t\tasync readThread(params = {}) {\n\t\t\tconst threadId = requireThreadId(params);\n\t\t\tconst includeTurns = params.includeTurns === true;\n\t\t\tconst messagesView = parseMessagesView(params.messagesView);\n\t\t\tconst loaded = await store.loadSession(threadId, { messagesView });\n\t\t\tif (!loaded) {\n\t\t\t\tthrow new MaestroAppServerError(-32004, \"Thread not found\");\n\t\t\t}\n\t\t\tconst thread: MaestroAppServerThread = {\n\t\t\t\t...toThreadSummaryFromLoadedSession(loaded),\n\t\t\t\tmessagesView: loaded.messagesView,\n\t\t\t};\n\t\t\tconst sessionFile = store.getSessionFileById(threadId);\n\t\t\tif (sessionFile && !sessionFile.startsWith(\"db:\")) {\n\t\t\t\tthread.path = sessionFile;\n\t\t\t}\n\t\t\tif (includeTurns) {\n\t\t\t\tconst projection = await loadProjectionForThread(store, threadId);\n\t\t\t\tthread.turns = turnsFromProjection(projection);\n\t\t\t\tthread.graph = graphFromProjection(projection);\n\t\t\t}\n\t\t\treturn thread;\n\t\t},\n\n\t\tasync updateThreadMetadata(params = {}) {\n\t\t\tconst threadId = requireThreadId(params);\n\t\t\tconst title = optionalTrimmedString(params.title, \"title\");\n\t\t\tconst summary = optionalTrimmedString(params.summary, \"summary\");\n\t\t\tconst resumeSummary = optionalTrimmedString(\n\t\t\t\tparams.resumeSummary,\n\t\t\t\t\"resumeSummary\",\n\t\t\t);\n\t\t\tconst favorite = optionalBoolean(params.favorite, \"favorite\");\n\t\t\tconst tags = optionalStringArray(params.tags, \"tags\");\n\t\t\tconst sessionFile = await requireExistingThreadReference(store, threadId);\n\n\t\t\tif (title !== undefined) {\n\t\t\t\tif (!store.setSessionTitle) {\n\t\t\t\t\tthrow new MaestroAppServerError(\n\t\t\t\t\t\t-32601,\n\t\t\t\t\t\t\"Thread title updates are not available\",\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tawait store.setSessionTitle(sessionFile, title);\n\t\t\t}\n\t\t\tif (summary !== undefined) {\n\t\t\t\tif (!store.saveSessionSummary) {\n\t\t\t\t\tthrow new MaestroAppServerError(\n\t\t\t\t\t\t-32601,\n\t\t\t\t\t\t\"Thread summary updates are not available\",\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tawait store.saveSessionSummary(summary, sessionFile);\n\t\t\t}\n\t\t\tif (resumeSummary !== undefined) {\n\t\t\t\tif (!store.saveSessionResumeSummary) {\n\t\t\t\t\tthrow new MaestroAppServerError(\n\t\t\t\t\t\t-32601,\n\t\t\t\t\t\t\"Thread resume summary updates are not available\",\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tawait store.saveSessionResumeSummary(resumeSummary, sessionFile);\n\t\t\t}\n\t\t\tif (favorite !== undefined) {\n\t\t\t\tif (!store.setSessionFavorite) {\n\t\t\t\t\tthrow new MaestroAppServerError(\n\t\t\t\t\t\t-32601,\n\t\t\t\t\t\t\"Thread favorite updates are not available\",\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tawait store.setSessionFavorite(sessionFile, favorite);\n\t\t\t}\n\t\t\tif (tags !== undefined) {\n\t\t\t\tif (!store.setSessionTags) {\n\t\t\t\t\tthrow new MaestroAppServerError(\n\t\t\t\t\t\t-32601,\n\t\t\t\t\t\t\"Thread tag updates are not available\",\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tawait store.setSessionTags(sessionFile, tags);\n\t\t\t}\n\t\t\tconst thread = await summarizeThreadAfterMutation(store, threadId);\n\t\t\tverifyThreadMetadataPersisted(thread, {\n\t\t\t\ttitle,\n\t\t\t\tsummary,\n\t\t\t\tresumeSummary,\n\t\t\t\tfavorite,\n\t\t\t\ttags,\n\t\t\t});\n\t\t\treturn { thread };\n\t\t},\n\n\t\tasync setThreadName(params = {}) {\n\t\t\tconst threadId = requireThreadId(params);\n\t\t\tconst name = optionalTrimmedString(params.name, \"name\");\n\t\t\tif (!name) {\n\t\t\t\tthrow new MaestroAppServerError(-32602, \"Missing name\");\n\t\t\t}\n\t\t\tconst sessionFile = await requireExistingThreadReference(store, threadId);\n\t\t\tif (!store.setSessionTitle) {\n\t\t\t\tthrow new MaestroAppServerError(\n\t\t\t\t\t-32601,\n\t\t\t\t\t\"Thread name updates are not available\",\n\t\t\t\t);\n\t\t\t}\n\t\t\tawait store.setSessionTitle(sessionFile, name);\n\t\t\tconst thread = await summarizeThreadAfterMutation(store, threadId);\n\t\t\tverifyThreadMetadataPersisted(thread, { title: name });\n\t\t\treturn { thread };\n\t\t},\n\n\t\tasync getThreadGoal(params = {}) {\n\t\t\tconst threadId = requireThreadId(params);\n\t\t\treturn {\n\t\t\t\tthreadId,\n\t\t\t\tgoal: await loadThreadGoal(store, threadId),\n\t\t\t};\n\t\t},\n\n\t\tasync setThreadGoal(params = {}) {\n\t\t\tconst threadId = requireThreadId(params);\n\t\t\tconst sessionFile = await requireExistingThreadReference(store, threadId);\n\t\t\tconst objective = optionalTrimmedString(params.objective, \"objective\");\n\t\t\tif (!objective) {\n\t\t\t\tthrow new MaestroAppServerError(-32602, \"Missing objective\");\n\t\t\t}\n\t\t\tconst existing = await loadThreadGoal(store, threadId);\n\t\t\tconst now = new Date().toISOString();\n\t\t\tconst goal: MaestroAppServerThreadGoal = {\n\t\t\t\tobjective,\n\t\t\t\tstatus: normalizeGoalStatus(params.status),\n\t\t\t\ttokenBudget: normalizeTokenBudget(params.tokenBudget),\n\t\t\t\tcreatedAt: existing?.createdAt ?? now,\n\t\t\t\tupdatedAt: now,\n\t\t\t};\n\t\t\tif (!store.setSessionAppServerGoal) {\n\t\t\t\tthrow new MaestroAppServerError(\n\t\t\t\t\t-32601,\n\t\t\t\t\t\"Thread goal updates are not available\",\n\t\t\t\t);\n\t\t\t}\n\t\t\tawait store.setSessionAppServerGoal(sessionFile, goal);\n\t\t\tawait flushSessionWrites(store);\n\t\t\treturn {\n\t\t\t\tthreadId,\n\t\t\t\tgoal: await verifyThreadGoalPersisted(store, threadId, goal),\n\t\t\t};\n\t\t},\n\n\t\tasync clearThreadGoal(params = {}) {\n\t\t\tconst threadId = requireThreadId(params);\n\t\t\tconst sessionFile = await requireExistingThreadReference(store, threadId);\n\t\t\tif (!store.setSessionAppServerGoal) {\n\t\t\t\tthrow new MaestroAppServerError(\n\t\t\t\t\t-32601,\n\t\t\t\t\t\"Thread goal updates are not available\",\n\t\t\t\t);\n\t\t\t}\n\t\t\tawait store.setSessionAppServerGoal(sessionFile, null);\n\t\t\tawait flushSessionWrites(store);\n\t\t\tawait verifyThreadGoalPersisted(store, threadId, null);\n\t\t\treturn { threadId, goal: null };\n\t\t},\n\n\t\tasync startThread(params = {}) {\n\t\t\tconst createThreadSession = store.createSession;\n\t\t\tif (!canStartThreads || !createThreadSession) {\n\t\t\t\tthrow new MaestroAppServerError(\n\t\t\t\t\t-32601,\n\t\t\t\t\t\"Thread start is not available\",\n\t\t\t\t);\n\t\t\t}\n\t\t\tconst title = optionalTrimmedString(params.title, \"title\");\n\t\t\tconst previousSessionFile = store.getSessionFile?.();\n\t\t\tconst previousLeafId = getCurrentLeafId(store);\n\t\t\tlet created: Awaited<\n\t\t\t\tReturnType<NonNullable<SessionStore[\"createSession\"]>>\n\t\t\t>;\n\t\t\ttry {\n\t\t\t\tcreated = await createThreadSession.call(\n\t\t\t\t\tstore,\n\t\t\t\t\ttitle ? { title } : undefined,\n\t\t\t\t);\n\t\t\t} finally {\n\t\t\t\tawait restoreSessionBinding(store, previousSessionFile, previousLeafId);\n\t\t\t}\n\t\t\tawait flushSessionWrites(store);\n\t\t\treturn {\n\t\t\t\tthread: await summarizeThreadAfterMutation(store, created.id),\n\t\t\t};\n\t\t},\n\n\t\tasync forkThread(params = {}) {\n\t\t\tconst createBranchedSession = store.createBranchedSession;\n\t\t\tif (!canForkThreads || !createBranchedSession) {\n\t\t\t\tthrow new MaestroAppServerError(-32601, \"Thread fork is not available\");\n\t\t\t}\n\t\t\tconst threadId = requireThreadId(params);\n\t\t\tconst leafEntryId = optionalTrimmedString(\n\t\t\t\tparams.leafEntryId,\n\t\t\t\t\"leafEntryId\",\n\t\t\t);\n\t\t\tif (!leafEntryId) {\n\t\t\t\tthrow new MaestroAppServerError(-32602, \"Missing leafEntryId\");\n\t\t\t}\n\t\t\tconst title = optionalTrimmedString(params.title, \"title\");\n\t\t\tconst sessionFile = await requireExistingThreadReference(store, threadId);\n\t\t\tconst previousSessionFile = store.getSessionFile?.();\n\t\t\tconst previousLeafId = getCurrentLeafId(store);\n\t\t\tlet forkedThreadId: string | undefined;\n\t\t\ttry {\n\t\t\t\tawait store.setSessionFile?.(sessionFile);\n\t\t\t\tlet forkedSessionFile: string;\n\t\t\t\ttry {\n\t\t\t\t\tforkedSessionFile = createBranchedSession.call(store, leafEntryId);\n\t\t\t\t} catch (error) {\n\t\t\t\t\tif (\n\t\t\t\t\t\terror instanceof Error &&\n\t\t\t\t\t\terror.message === `Entry ${leafEntryId} not found`\n\t\t\t\t\t) {\n\t\t\t\t\t\tthrow new MaestroAppServerError(-32602, \"Unknown leafEntryId\");\n\t\t\t\t\t}\n\t\t\t\t\tthrow error;\n\t\t\t\t}\n\t\t\t\tconst forkedEntries = safeReadSessionEntries(forkedSessionFile);\n\t\t\t\tconst forkedHeader = forkedEntries.find(\n\t\t\t\t\t(entry) => entry.type === \"session\",\n\t\t\t\t);\n\t\t\t\tforkedThreadId =\n\t\t\t\t\tforkedHeader && \"id\" in forkedHeader ? forkedHeader.id : undefined;\n\t\t\t\tif (!forkedThreadId) {\n\t\t\t\t\tthrow new MaestroAppServerError(\n\t\t\t\t\t\t-32000,\n\t\t\t\t\t\t\"Thread fork did not produce a readable session\",\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tif (title && store.setSessionTitle) {\n\t\t\t\t\tawait store.setSessionTitle(forkedSessionFile, title);\n\t\t\t\t}\n\t\t\t} finally {\n\t\t\t\tawait restoreSessionBinding(store, previousSessionFile, previousLeafId);\n\t\t\t}\n\t\t\tawait flushSessionWrites(store);\n\t\t\treturn {\n\t\t\t\tthread: await summarizeThreadAfterMutation(store, forkedThreadId),\n\t\t\t\tparentThreadId: threadId,\n\t\t\t\tforkedFromEntryId: leafEntryId,\n\t\t\t};\n\t\t},\n\n\t\tasync archiveThread(params = {}) {\n\t\t\tconst setSessionArchived = store.setSessionArchived;\n\t\t\tif (!canArchiveThreads || !setSessionArchived) {\n\t\t\t\tthrow new MaestroAppServerError(\n\t\t\t\t\t-32601,\n\t\t\t\t\t\"Thread archive is not available\",\n\t\t\t\t);\n\t\t\t}\n\t\t\tconst threadId = requireThreadId(params);\n\t\t\tconst sessionFile = await requireExistingThreadReference(store, threadId);\n\t\t\tawait setSessionArchived.call(store, sessionFile, true);\n\t\t\tconst thread = await summarizeThreadAfterMutation(store, threadId);\n\t\t\tif (!thread.archived) {\n\t\t\t\tthrow new MaestroAppServerError(\n\t\t\t\t\t-32000,\n\t\t\t\t\t\"Thread archive update was not persisted\",\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn { thread, archived: true };\n\t\t},\n\n\t\tasync unarchiveThread(params = {}) {\n\t\t\tconst setSessionArchived = store.setSessionArchived;\n\t\t\tif (!canArchiveThreads || !setSessionArchived) {\n\t\t\t\tthrow new MaestroAppServerError(\n\t\t\t\t\t-32601,\n\t\t\t\t\t\"Thread archive is not available\",\n\t\t\t\t);\n\t\t\t}\n\t\t\tconst threadId = requireThreadId(params);\n\t\t\tconst sessionFile = await requireExistingThreadReference(store, threadId);\n\t\t\tawait setSessionArchived.call(store, sessionFile, false);\n\t\t\tconst thread = await summarizeThreadAfterMutation(store, threadId);\n\t\t\tif (thread.archived) {\n\t\t\t\tthrow new MaestroAppServerError(\n\t\t\t\t\t-32000,\n\t\t\t\t\t\"Thread archive update was not persisted\",\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn { thread, archived: false };\n\t\t},\n\n\t\tasync deleteThread(params = {}) {\n\t\t\tconst deleteSession = store.deleteSession;\n\t\t\tif (!canDeleteThreads || !deleteSession) {\n\t\t\t\tthrow new MaestroAppServerError(\n\t\t\t\t\t-32601,\n\t\t\t\t\t\"Thread delete is not available\",\n\t\t\t\t);\n\t\t\t}\n\t\t\tconst threadId = requireThreadId(params);\n\t\t\tconst sessionFile = await requireExistingThreadReference(store, threadId);\n\t\t\tif (isActiveThreadSessionFile(store, sessionFile)) {\n\t\t\t\tthrow new MaestroAppServerError(\n\t\t\t\t\t-32000,\n\t\t\t\t\t\"Cannot delete the currently active thread\",\n\t\t\t\t);\n\t\t\t}\n\t\t\tawait deleteSession.call(store, threadId);\n\t\t\tawait flushSessionWrites(store);\n\t\t\treturn { threadId, deleted: true };\n\t\t},\n\n\t\tasync listTurns(params = {}) {\n\t\t\tconst threadId = requireThreadId(params);\n\t\t\tconst limit = normalizeLimit(params.limit);\n\t\t\tconst offset = decodeCursor(params.cursor);\n\t\t\tconst projection = await loadProjectionForThread(store, threadId);\n\t\t\tconst turns = turnsFromProjection(projection);\n\t\t\tconst page = turns.slice(offset, offset + limit);\n\t\t\tconst nextOffset = offset + page.length;\n\t\t\treturn {\n\t\t\t\tthreadId,\n\t\t\t\tturns: page,\n\t\t\t\tnextCursor: nextOffset < turns.length ? encodeCursor(nextOffset) : null,\n\t\t\t\tgraph: graphFromProjection(projection),\n\t\t\t};\n\t\t},\n\t};\n}\n\nasync function loadProjectionForThread(\n\tstore: SessionStore,\n\tthreadId: string,\n): Promise<SessionGraphProjection> {\n\tif (store.loadEntries) {\n\t\tconst entries = await store.loadEntries(threadId);\n\t\tif (entries) {\n\t\t\treturn buildSessionGraphProjection(entries);\n\t\t}\n\t}\n\tconst sessionFile = store.getSessionFileById(threadId);\n\tif (!sessionFile || sessionFile.startsWith(\"db:\")) {\n\t\tthrow new MaestroAppServerError(-32004, \"Thread not found\");\n\t}\n\treturn buildSessionGraphProjection(safeReadSessionEntries(sessionFile));\n}\n\nasync function loadThreadGoal(\n\tstore: SessionStore,\n\tthreadId: string,\n): Promise<MaestroAppServerThreadGoal | null> {\n\tif (store.loadEntries) {\n\t\tconst entries = await store.loadEntries(threadId);\n\t\tif (entries) {\n\t\t\treturn latestGoalFromEntries(entries);\n\t\t}\n\t}\n\tconst sessionFile = store.getSessionFileById(threadId);\n\tif (!sessionFile) {\n\t\tthrow new MaestroAppServerError(-32004, \"Thread not found\");\n\t}\n\tif (sessionFile.startsWith(\"db:\")) {\n\t\tconst loaded = await store.loadSession(threadId, {\n\t\t\tmessagesView: \"notLoaded\",\n\t\t});\n\t\tif (!loaded) {\n\t\t\tthrow new MaestroAppServerError(-32004, \"Thread not found\");\n\t\t}\n\t\treturn null;\n\t}\n\treturn latestGoalFromEntries(safeReadSessionEntries(sessionFile));\n}\n\nfunction isSupportedMethod(\n\tmethod: string,\n): method is (typeof maestroAppServerClientMethods)[number] {\n\treturn maestroAppServerClientMethods.includes(\n\t\tmethod as (typeof maestroAppServerClientMethods)[number],\n\t);\n}\n\nexport async function handleMaestroAppServerRequest(\n\tapi: MaestroAppServerSessionApi,\n\trequest: MaestroAppServerClientRequest,\n): Promise<MaestroAppServerResponse> {\n\tconst id = request.id as JsonRpcId;\n\ttry {\n\t\tif (!isSupportedMethod(request.method)) {\n\t\t\tthrow new MaestroAppServerError(-32601, \"Method not found\");\n\t\t}\n\t\tconst method = request.method;\n\t\tconst protocolModeDecision = api.checkProtocolMode?.(method) ?? {\n\t\t\tallowed: true,\n\t\t};\n\t\tif (!protocolModeDecision.allowed) {\n\t\t\tthrow new MaestroAppServerError(\n\t\t\t\t-32003,\n\t\t\t\tprotocolModeDecision.reason ?? \"Method blocked by protocol mode\",\n\t\t\t);\n\t\t}\n\n\t\tswitch (method) {\n\t\t\tcase \"initialize\":\n\t\t\t\treturn {\n\t\t\t\t\tjsonrpc: \"2.0\",\n\t\t\t\t\tid,\n\t\t\t\t\tresult: api.initialize(),\n\t\t\t\t};\n\t\t\tcase \"protocol/mode/list\":\n\t\t\t\treturn {\n\t\t\t\t\tjsonrpc: \"2.0\",\n\t\t\t\t\tid,\n\t\t\t\t\tresult: await api.listProtocolModes(request.params),\n\t\t\t\t};\n\t\t\tcase \"protocol/mode/set\":\n\t\t\t\treturn {\n\t\t\t\t\tjsonrpc: \"2.0\",\n\t\t\t\t\tid,\n\t\t\t\t\tresult: await api.setProtocolMode(request.params),\n\t\t\t\t};\n\t\t\tcase \"model/list\":\n\t\t\t\treturn {\n\t\t\t\t\tjsonrpc: \"2.0\",\n\t\t\t\t\tid,\n\t\t\t\t\tresult: await api.listModels(request.params),\n\t\t\t\t};\n\t\t\tcase \"modelProvider/capabilities/read\":\n\t\t\t\treturn {\n\t\t\t\t\tjsonrpc: \"2.0\",\n\t\t\t\t\tid,\n\t\t\t\t\tresult: await api.readModelProviderCapabilities(request.params),\n\t\t\t\t};\n\t\t\tcase \"policy/read\":\n\t\t\t\treturn {\n\t\t\t\t\tjsonrpc: \"2.0\",\n\t\t\t\t\tid,\n\t\t\t\t\tresult: await api.readPolicy(request.params),\n\t\t\t\t};\n\t\t\tcase \"policy/check\":\n\t\t\t\treturn {\n\t\t\t\t\tjsonrpc: \"2.0\",\n\t\t\t\t\tid,\n\t\t\t\t\tresult: await api.checkPolicy(request.params),\n\t\t\t\t};\n\t\t\tcase \"requirements/list\":\n\t\t\t\treturn {\n\t\t\t\t\tjsonrpc: \"2.0\",\n\t\t\t\t\tid,\n\t\t\t\t\tresult: await api.listRequirements(request.params),\n\t\t\t\t};\n\t\t\tcase \"network/fetch\":\n\t\t\t\treturn {\n\t\t\t\t\tjsonrpc: \"2.0\",\n\t\t\t\t\tid,\n\t\t\t\t\tresult: await api.fetchNetwork(request.params),\n\t\t\t\t};\n\t\t\tcase \"network/audit/list\":\n\t\t\t\treturn {\n\t\t\t\t\tjsonrpc: \"2.0\",\n\t\t\t\t\tid,\n\t\t\t\t\tresult: await api.listNetworkAudit(request.params),\n\t\t\t\t};\n\t\t\tcase \"sandbox/probe\":\n\t\t\t\treturn {\n\t\t\t\t\tjsonrpc: \"2.0\",\n\t\t\t\t\tid,\n\t\t\t\t\tresult: await api.probeSandbox(request.params),\n\t\t\t\t};\n\t\t\tcase \"sandbox/proof/run\":\n\t\t\t\treturn {\n\t\t\t\t\tjsonrpc: \"2.0\",\n\t\t\t\t\tid,\n\t\t\t\t\tresult: await api.runSandboxProof(request.params),\n\t\t\t\t};\n\t\t\tcase \"externalAgent/import\":\n\t\t\t\treturn {\n\t\t\t\t\tjsonrpc: \"2.0\",\n\t\t\t\t\tid,\n\t\t\t\t\tresult: await api.importExternalAgent(request.params),\n\t\t\t\t};\n\t\t\tcase \"pluginBundle/list\":\n\t\t\t\treturn {\n\t\t\t\t\tjsonrpc: \"2.0\",\n\t\t\t\t\tid,\n\t\t\t\t\tresult: await api.listPluginBundles(request.params),\n\t\t\t\t};\n\t\t\tcase \"pluginBundle/install\":\n\t\t\t\treturn {\n\t\t\t\t\tjsonrpc: \"2.0\",\n\t\t\t\t\tid,\n\t\t\t\t\tresult: await api.installPluginBundle(request.params),\n\t\t\t\t};\n\t\t\tcase \"pluginBundle/remove\":\n\t\t\t\treturn {\n\t\t\t\t\tjsonrpc: \"2.0\",\n\t\t\t\t\tid,\n\t\t\t\t\tresult: await api.removePluginBundle(request.params),\n\t\t\t\t};\n\t\t\tcase \"daemon/status\":\n\t\t\t\treturn {\n\t\t\t\t\tjsonrpc: \"2.0\",\n\t\t\t\t\tid,\n\t\t\t\t\tresult: await api.readDaemonStatus(request.params),\n\t\t\t\t};\n\t\t\tcase \"remoteControl/status\":\n\t\t\t\treturn {\n\t\t\t\t\tjsonrpc: \"2.0\",\n\t\t\t\t\tid,\n\t\t\t\t\tresult: await api.readRemoteControlStatus(request.params),\n\t\t\t\t};\n\t\t\tcase \"remoteControl/lease/read\":\n\t\t\t\treturn {\n\t\t\t\t\tjsonrpc: \"2.0\",\n\t\t\t\t\tid,\n\t\t\t\t\tresult: await api.readRemoteControlLease(request.params),\n\t\t\t\t};\n\t\t\tcase \"remoteControl/lease/heartbeat\":\n\t\t\t\treturn {\n\t\t\t\t\tjsonrpc: \"2.0\",\n\t\t\t\t\tid,\n\t\t\t\t\tresult: await api.heartbeatRemoteControlLease(request.params),\n\t\t\t\t};\n\t\t\tcase \"remoteControl/drain\":\n\t\t\t\treturn {\n\t\t\t\t\tjsonrpc: \"2.0\",\n\t\t\t\t\tid,\n\t\t\t\t\tresult: await api.drainRemoteControl(request.params),\n\t\t\t\t};\n\t\t\tcase \"command/exec\":\n\t\t\t\treturn {\n\t\t\t\t\tjsonrpc: \"2.0\",\n\t\t\t\t\tid,\n\t\t\t\t\tresult: await api.execCommand(request.params),\n\t\t\t\t};\n\t\t\tcase \"command/exec/write\":\n\t\t\t\treturn {\n\t\t\t\t\tjsonrpc: \"2.0\",\n\t\t\t\t\tid,\n\t\t\t\t\tresult: await api.writeCommandStdin(request.params),\n\t\t\t\t};\n\t\t\tcase \"command/exec/terminate\":\n\t\t\t\treturn {\n\t\t\t\t\tjsonrpc: \"2.0\",\n\t\t\t\t\tid,\n\t\t\t\t\tresult: await api.terminateCommand(request.params),\n\t\t\t\t};\n\t\t\tcase \"fs/readFile\":\n\t\t\t\treturn {\n\t\t\t\t\tjsonrpc: \"2.0\",\n\t\t\t\t\tid,\n\t\t\t\t\tresult: await api.readFile(request.params),\n\t\t\t\t};\n\t\t\tcase \"fs/writeFile\":\n\t\t\t\treturn {\n\t\t\t\t\tjsonrpc: \"2.0\",\n\t\t\t\t\tid,\n\t\t\t\t\tresult: await api.writeFile(request.params),\n\t\t\t\t};\n\t\t\tcase \"fs/readDirectory\":\n\t\t\t\treturn {\n\t\t\t\t\tjsonrpc: \"2.0\",\n\t\t\t\t\tid,\n\t\t\t\t\tresult: await api.readDirectory(request.params),\n\t\t\t\t};\n\t\t\tcase \"fs/getMetadata\":\n\t\t\t\treturn {\n\t\t\t\t\tjsonrpc: \"2.0\",\n\t\t\t\t\tid,\n\t\t\t\t\tresult: await api.getMetadata(request.params),\n\t\t\t\t};\n\t\t\tcase \"fs/createDirectory\":\n\t\t\t\treturn {\n\t\t\t\t\tjsonrpc: \"2.0\",\n\t\t\t\t\tid,\n\t\t\t\t\tresult: await api.createDirectory(request.params),\n\t\t\t\t};\n\t\t\tcase \"fs/remove\":\n\t\t\t\treturn {\n\t\t\t\t\tjsonrpc: \"2.0\",\n\t\t\t\t\tid,\n\t\t\t\t\tresult: await api.remove(request.params),\n\t\t\t\t};\n\t\t\tcase \"fs/copy\":\n\t\t\t\treturn {\n\t\t\t\t\tjsonrpc: \"2.0\",\n\t\t\t\t\tid,\n\t\t\t\t\tresult: await api.copy(request.params),\n\t\t\t\t};\n\t\t\tcase \"fs/watch\":\n\t\t\t\treturn {\n\t\t\t\t\tjsonrpc: \"2.0\",\n\t\t\t\t\tid,\n\t\t\t\t\tresult: await api.watch(request.params),\n\t\t\t\t};\n\t\t\tcase \"fs/unwatch\":\n\t\t\t\treturn {\n\t\t\t\t\tjsonrpc: \"2.0\",\n\t\t\t\t\tid,\n\t\t\t\t\tresult: await api.unwatch(request.params),\n\t\t\t\t};\n\t\t\tcase \"thread/list\":\n\t\t\t\treturn {\n\t\t\t\t\tjsonrpc: \"2.0\",\n\t\t\t\t\tid,\n\t\t\t\t\tresult: await api.listThreads(request.params),\n\t\t\t\t};\n\t\t\tcase \"thread/read\":\n\t\t\t\treturn {\n\t\t\t\t\tjsonrpc: \"2.0\",\n\t\t\t\t\tid,\n\t\t\t\t\tresult: {\n\t\t\t\t\t\tthread: await api.readThread(request.params),\n\t\t\t\t\t},\n\t\t\t\t};\n\t\t\tcase \"thread/metadata/update\":\n\t\t\t\treturn {\n\t\t\t\t\tjsonrpc: \"2.0\",\n\t\t\t\t\tid,\n\t\t\t\t\tresult: await api.updateThreadMetadata(request.params),\n\t\t\t\t};\n\t\t\tcase \"thread/name/set\":\n\t\t\t\treturn {\n\t\t\t\t\tjsonrpc: \"2.0\",\n\t\t\t\t\tid,\n\t\t\t\t\tresult: await api.setThreadName(request.params),\n\t\t\t\t};\n\t\t\tcase \"thread/goal/get\":\n\t\t\t\treturn {\n\t\t\t\t\tjsonrpc: \"2.0\",\n\t\t\t\t\tid,\n\t\t\t\t\tresult: await api.getThreadGoal(request.params),\n\t\t\t\t};\n\t\t\tcase \"thread/goal/set\":\n\t\t\t\treturn {\n\t\t\t\t\tjsonrpc: \"2.0\",\n\t\t\t\t\tid,\n\t\t\t\t\tresult: await api.setThreadGoal(request.params),\n\t\t\t\t};\n\t\t\tcase \"thread/goal/clear\":\n\t\t\t\treturn {\n\t\t\t\t\tjsonrpc: \"2.0\",\n\t\t\t\t\tid,\n\t\t\t\t\tresult: await api.clearThreadGoal(request.params),\n\t\t\t\t};\n\t\t\tcase \"thread/start\":\n\t\t\t\treturn {\n\t\t\t\t\tjsonrpc: \"2.0\",\n\t\t\t\t\tid,\n\t\t\t\t\tresult: await api.startThread(request.params),\n\t\t\t\t};\n\t\t\tcase \"thread/fork\":\n\t\t\t\treturn {\n\t\t\t\t\tjsonrpc: \"2.0\",\n\t\t\t\t\tid,\n\t\t\t\t\tresult: await api.forkThread(request.params),\n\t\t\t\t};\n\t\t\tcase \"thread/archive\":\n\t\t\t\treturn {\n\t\t\t\t\tjsonrpc: \"2.0\",\n\t\t\t\t\tid,\n\t\t\t\t\tresult: await api.archiveThread(request.params),\n\t\t\t\t};\n\t\t\tcase \"thread/unarchive\":\n\t\t\t\treturn {\n\t\t\t\t\tjsonrpc: \"2.0\",\n\t\t\t\t\tid,\n\t\t\t\t\tresult: await api.unarchiveThread(request.params),\n\t\t\t\t};\n\t\t\tcase \"thread/delete\":\n\t\t\t\treturn {\n\t\t\t\t\tjsonrpc: \"2.0\",\n\t\t\t\t\tid,\n\t\t\t\t\tresult: await api.deleteThread(request.params),\n\t\t\t\t};\n\t\t\tcase \"thread/turns/list\":\n\t\t\t\treturn {\n\t\t\t\t\tjsonrpc: \"2.0\",\n\t\t\t\t\tid,\n\t\t\t\t\tresult: await api.listTurns(request.params),\n\t\t\t\t};\n\t\t\tdefault:\n\t\t\t\tthrow new MaestroAppServerError(-32601, \"Method not found\");\n\t\t}\n\t} catch (error) {\n\t\tif (\n\t\t\terror instanceof MaestroAppServerError ||\n\t\t\terror instanceof MaestroAppServerHostControlError ||\n\t\t\terror instanceof MaestroAppServerNetworkGovernanceError ||\n\t\t\terror instanceof MaestroAppServerPolicyControlError ||\n\t\t\terror instanceof MaestroAppServerSandboxProofError ||\n\t\t\terror instanceof MaestroAppServerExternalAgentImportError ||\n\t\t\terror instanceof MaestroAppServerPluginBundleError ||\n\t\t\terror instanceof MaestroAppServerDaemonLifecycleError ||\n\t\t\terror instanceof MaestroAppServerProtocolModesError\n\t\t) {\n\t\t\treturn {\n\t\t\t\tjsonrpc: \"2.0\",\n\t\t\t\tid,\n\t\t\t\terror: {\n\t\t\t\t\tcode: error.code,\n\t\t\t\t\tmessage: error.message,\n\t\t\t\t},\n\t\t\t};\n\t\t}\n\t\treturn {\n\t\t\tjsonrpc: \"2.0\",\n\t\t\tid,\n\t\t\terror: {\n\t\t\t\tcode: -32603,\n\t\t\t\tmessage: error instanceof Error ? error.message : \"Internal error\",\n\t\t\t},\n\t\t};\n\t}\n}\n"]}
|
|
1
|
+
{"version":3,"file":"session-api.js","sourceRoot":"","sources":["../../src/app-server/session-api.ts"],"names":[],"mappings":"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","sourcesContent":["import { resolve } from \"node:path\";\nimport {\n\ttype MaestroAppServerClientRequest,\n\ttype MaestroAppServerCommandExecResult,\n\ttype MaestroAppServerCommandProcessResult,\n\ttype MaestroAppServerDaemonStatusResult,\n\ttype MaestroAppServerEmptyResult,\n\ttype MaestroAppServerExternalAgentImportResult,\n\ttype MaestroAppServerFsMetadataResult,\n\ttype MaestroAppServerFsReadDirectoryResult,\n\ttype MaestroAppServerFsReadFileResult,\n\ttype MaestroAppServerFsWatchResult,\n\ttype MaestroAppServerModel,\n\ttype MaestroAppServerModelListResult,\n\ttype MaestroAppServerModelProviderCapabilities,\n\ttype MaestroAppServerModelProviderCapabilitiesReadResult,\n\ttype MaestroAppServerNetworkAuditListResult,\n\ttype MaestroAppServerNetworkFetchResult,\n\ttype MaestroAppServerPluginBundleListResult,\n\ttype MaestroAppServerPluginBundleMutationResult,\n\ttype MaestroAppServerPolicyCheckResult,\n\ttype MaestroAppServerPolicyReadResult,\n\ttype MaestroAppServerProtocolModeListResult,\n\ttype MaestroAppServerProtocolModeSetResult,\n\ttype MaestroAppServerRemoteControlDrainResult,\n\ttype MaestroAppServerRemoteControlLeaseResult,\n\ttype MaestroAppServerRemoteControlStatusResult,\n\ttype MaestroAppServerRequirementsListResult,\n\ttype MaestroAppServerResponse,\n\ttype MaestroAppServerSandboxCheckResult,\n\ttype MaestroAppServerSandboxProbeResult,\n\ttype MaestroAppServerServerNotification,\n\ttype MaestroAppServerThread,\n\ttype MaestroAppServerThreadArchiveResult,\n\ttype MaestroAppServerThreadDeleteResult,\n\ttype MaestroAppServerThreadForkResult,\n\ttype MaestroAppServerThreadGoal,\n\ttype MaestroAppServerThreadGoalResult,\n\ttype MaestroAppServerThreadGraph,\n\ttype MaestroAppServerThreadItem,\n\ttype MaestroAppServerThreadListResult,\n\ttype MaestroAppServerThreadMetadataUpdateResult,\n\ttype MaestroAppServerThreadStartResult,\n\ttype MaestroAppServerThreadSummary,\n\ttype MaestroAppServerTurn,\n\ttype MaestroAppServerTurnsListResult,\n\tmaestroAppServerClientMethods,\n\tmaestroAppServerProtocolVersion,\n\tmaestroAppServerSupportedProtocolVersions,\n} from \"@evalops/contracts\";\nimport type { AppMessage } from \"../agent/types.js\";\nimport { getRegisteredModels } from \"../models/registry.js\";\nimport type { RegisteredModel } from \"../models/registry.js\";\nimport type { SessionManager } from \"../session/manager.js\";\nimport { safeReadSessionEntries } from \"../session/session-context.js\";\nimport {\n\ttype SessionGraphProjection,\n\tbuildSessionGraphProjection,\n} from \"../session/session-graph-projection.js\";\nimport type {\n\tSessionEntry,\n\tSessionMessagesView,\n\tSessionMetadata,\n\tSessionSummary,\n\tSessionTreeEntry,\n} from \"../session/types.js\";\nimport {\n\ttype MaestroAppServerDaemonLifecycle,\n\tMaestroAppServerDaemonLifecycleError,\n\tcreateMaestroAppServerDaemonLifecycle,\n} from \"./daemon-lifecycle-api.js\";\nimport {\n\ttype MaestroAppServerExternalAgentImport,\n\tMaestroAppServerExternalAgentImportError,\n\tcreateMaestroAppServerExternalAgentImport,\n\tnormalizeExternalAgentImportParams,\n} from \"./external-agent-import-api.js\";\nimport {\n\ttype MaestroAppServerHostControl,\n\tMaestroAppServerHostControlError,\n\tcreateMaestroAppServerHostControl,\n} from \"./host-control-api.js\";\nimport {\n\ttype MaestroAppServerNetworkGovernance,\n\tMaestroAppServerNetworkGovernanceError,\n\tcreateMaestroAppServerNetworkGovernance,\n} from \"./network-governance-api.js\";\nimport {\n\ttype MaestroAppServerPluginBundleApi,\n\tMaestroAppServerPluginBundleError,\n\tcreateMaestroAppServerPluginBundleApi,\n} from \"./plugin-bundle-api.js\";\nimport {\n\ttype MaestroAppServerPolicyControl,\n\tMaestroAppServerPolicyControlError,\n\tcreateMaestroAppServerPolicyControl,\n} from \"./policy-control-api.js\";\nimport {\n\ttype MaestroAppServerProtocolModeDecision,\n\ttype MaestroAppServerProtocolModes,\n\tMaestroAppServerProtocolModesError,\n\tcreateMaestroAppServerProtocolModes,\n} from \"./protocol-modes-api.js\";\nimport {\n\ttype MaestroAppServerSandboxCheck,\n\tMaestroAppServerSandboxCheckError,\n\tcreateMaestroAppServerSandboxCheck,\n\tnormalizeSandboxCheckParams,\n} from \"./sandbox-check-api.js\";\n\nconst DEFAULT_PAGE_LIMIT = 50;\nconst MAX_PAGE_LIMIT = 100;\n\nexport type { MaestroAppServerServerNotification };\nexport {\n\ttype MaestroAppServerDaemonLifecycle,\n\tcreateMaestroAppServerDaemonLifecycle,\n} from \"./daemon-lifecycle-api.js\";\nexport {\n\ttype MaestroAppServerExternalAgentImport,\n\tcreateMaestroAppServerExternalAgentImport,\n} from \"./external-agent-import-api.js\";\nexport {\n\ttype MaestroAppServerPluginBundleApi,\n\tcreateMaestroAppServerPluginBundleApi,\n} from \"./plugin-bundle-api.js\";\nexport {\n\ttype MaestroAppServerProtocolModes,\n\tcreateMaestroAppServerProtocolModes,\n} from \"./protocol-modes-api.js\";\nexport {\n\ttype MaestroAppServerSandboxCheck,\n\tcreateMaestroAppServerSandboxCheck,\n} from \"./sandbox-check-api.js\";\n\ntype JsonRpcId = string | number;\ntype MaybePromise<T> = T | Promise<T>;\n\ntype SessionStore = Pick<\n\tSessionManager,\n\t\"getSessionFileById\" | \"loadAllSessions\" | \"listSessions\" | \"loadSession\"\n> & {\n\tgetSessionFile?: () => string;\n\tloadEntries?: (sessionId: string) => Promise<SessionEntry[] | null>;\n\tflush?: () => Promise<void>;\n\tsaveSessionSummary?: (\n\t\tsummary: string,\n\t\tsessionPath?: string,\n\t) => MaybePromise<void>;\n\tsaveSessionResumeSummary?: (\n\t\tsummary: string,\n\t\tsessionPath?: string,\n\t) => MaybePromise<void>;\n\tsetSessionFavorite?: (\n\t\tsessionPath: string,\n\t\tfavorite: boolean,\n\t) => MaybePromise<void>;\n\tsetSessionTitle?: (sessionPath: string, title: string) => MaybePromise<void>;\n\tsetSessionTags?: (sessionPath: string, tags: string[]) => MaybePromise<void>;\n\tsetSessionArchived?: (\n\t\tsessionPath: string,\n\t\tarchived: boolean,\n\t) => MaybePromise<void>;\n\tsetSessionAppServerGoal?: (\n\t\tsessionPath: string,\n\t\tgoal: MaestroAppServerThreadGoal | null,\n\t) => MaybePromise<void>;\n\tcreateSession?: (options?: { title?: string }) => Promise<{\n\t\tid: string;\n\t\ttitle?: string;\n\t\tcreatedAt: string;\n\t\tupdatedAt: string;\n\t\tmessageCount: number;\n\t}>;\n\tcanCreateSession?: () => boolean;\n\tcreateBranchedSession?: (leafId: string) => string;\n\tsetSessionFile?: (path: string) => MaybePromise<void>;\n\tresumeSession?: (sessionId: string) => Promise<boolean>;\n\tgetLeafId?: () => string | null;\n\tgetCurrentLeafId?: () => string | null;\n\tbranch?: (branchFromId: string) => MaybePromise<void>;\n\tresetLeaf?: () => MaybePromise<void>;\n\tdeleteSession?: (sessionId: string) => MaybePromise<void>;\n\timportSessionEntries?: (entries: SessionEntry[]) => {\n\t\tsessionFile: string;\n\t\tsessionId: string;\n\t\timportedCount: number;\n\t};\n\timportPortableSession?: (path: string) => {\n\t\tsessionFile: string;\n\t\tsessionId: string;\n\t\timportedCount: number;\n\t};\n};\n\nexport interface MaestroAppServerSessionApiOptions {\n\thostControl?: MaestroAppServerHostControl | false;\n\tpolicyControl?: MaestroAppServerPolicyControl | false;\n\tnetworkGovernance?: MaestroAppServerNetworkGovernance | false;\n\tsandboxCheck?: MaestroAppServerSandboxCheck | false;\n\texternalAgentImport?: MaestroAppServerExternalAgentImport | false;\n\tpluginBundles?: MaestroAppServerPluginBundleApi | false;\n\tdaemonLifecycle?: MaestroAppServerDaemonLifecycle | false;\n\tprotocolModes?: MaestroAppServerProtocolModes | false;\n\tonNotification?: (notification: MaestroAppServerServerNotification) => void;\n}\n\nexport interface MaestroAppServerSessionApi {\n\tinitialize(): MaestroAppServerResponse[\"result\"];\n\tcheckProtocolMode(\n\t\tmethod: (typeof maestroAppServerClientMethods)[number],\n\t): MaestroAppServerProtocolModeDecision;\n\tlistProtocolModes(\n\t\tparams?: Record<string, unknown>,\n\t): Promise<MaestroAppServerProtocolModeListResult>;\n\tsetProtocolMode(\n\t\tparams?: Record<string, unknown>,\n\t): Promise<MaestroAppServerProtocolModeSetResult>;\n\tlistModels(\n\t\tparams?: Record<string, unknown>,\n\t): Promise<MaestroAppServerModelListResult>;\n\treadModelProviderCapabilities(\n\t\tparams?: Record<string, unknown>,\n\t): Promise<MaestroAppServerModelProviderCapabilitiesReadResult>;\n\treadPolicy(\n\t\tparams?: Record<string, unknown>,\n\t): Promise<MaestroAppServerPolicyReadResult>;\n\tcheckPolicy(\n\t\tparams?: Record<string, unknown>,\n\t): Promise<MaestroAppServerPolicyCheckResult>;\n\tlistRequirements(\n\t\tparams?: Record<string, unknown>,\n\t): Promise<MaestroAppServerRequirementsListResult>;\n\tfetchNetwork(\n\t\tparams?: Record<string, unknown>,\n\t): Promise<MaestroAppServerNetworkFetchResult>;\n\tlistNetworkAudit(\n\t\tparams?: Record<string, unknown>,\n\t): Promise<MaestroAppServerNetworkAuditListResult>;\n\tprobeSandbox(\n\t\tparams?: Record<string, unknown>,\n\t): Promise<MaestroAppServerSandboxProbeResult>;\n\trunSandboxCheck(\n\t\tparams?: Record<string, unknown>,\n\t): Promise<MaestroAppServerSandboxCheckResult>;\n\timportExternalAgent(\n\t\tparams?: Record<string, unknown>,\n\t): Promise<MaestroAppServerExternalAgentImportResult>;\n\tlistPluginBundles(\n\t\tparams?: Record<string, unknown>,\n\t): Promise<MaestroAppServerPluginBundleListResult>;\n\tinstallPluginBundle(\n\t\tparams?: Record<string, unknown>,\n\t): Promise<MaestroAppServerPluginBundleMutationResult>;\n\tremovePluginBundle(\n\t\tparams?: Record<string, unknown>,\n\t): Promise<MaestroAppServerPluginBundleMutationResult>;\n\treadDaemonStatus(\n\t\tparams?: Record<string, unknown>,\n\t): Promise<MaestroAppServerDaemonStatusResult>;\n\treadRemoteControlStatus(\n\t\tparams?: Record<string, unknown>,\n\t): Promise<MaestroAppServerRemoteControlStatusResult>;\n\treadRemoteControlLease(\n\t\tparams?: Record<string, unknown>,\n\t): Promise<MaestroAppServerRemoteControlLeaseResult>;\n\theartbeatRemoteControlLease(\n\t\tparams?: Record<string, unknown>,\n\t): Promise<MaestroAppServerRemoteControlLeaseResult>;\n\tdrainRemoteControl(\n\t\tparams?: Record<string, unknown>,\n\t): Promise<MaestroAppServerRemoteControlDrainResult>;\n\texecCommand(\n\t\tparams?: Record<string, unknown>,\n\t): Promise<MaestroAppServerCommandExecResult>;\n\twriteCommandStdin(\n\t\tparams?: Record<string, unknown>,\n\t): Promise<MaestroAppServerCommandProcessResult>;\n\tterminateCommand(\n\t\tparams?: Record<string, unknown>,\n\t): Promise<MaestroAppServerCommandProcessResult>;\n\treadFile(\n\t\tparams?: Record<string, unknown>,\n\t): Promise<MaestroAppServerFsReadFileResult>;\n\twriteFile(\n\t\tparams?: Record<string, unknown>,\n\t): Promise<MaestroAppServerEmptyResult>;\n\treadDirectory(\n\t\tparams?: Record<string, unknown>,\n\t): Promise<MaestroAppServerFsReadDirectoryResult>;\n\tgetMetadata(\n\t\tparams?: Record<string, unknown>,\n\t): Promise<MaestroAppServerFsMetadataResult>;\n\tcreateDirectory(\n\t\tparams?: Record<string, unknown>,\n\t): Promise<MaestroAppServerEmptyResult>;\n\tremove(\n\t\tparams?: Record<string, unknown>,\n\t): Promise<MaestroAppServerEmptyResult>;\n\tcopy(params?: Record<string, unknown>): Promise<MaestroAppServerEmptyResult>;\n\twatch(\n\t\tparams?: Record<string, unknown>,\n\t): Promise<MaestroAppServerFsWatchResult>;\n\tunwatch(\n\t\tparams?: Record<string, unknown>,\n\t): Promise<MaestroAppServerEmptyResult>;\n\tlistThreads(\n\t\tparams?: Record<string, unknown>,\n\t): Promise<MaestroAppServerThreadListResult>;\n\treadThread(params?: Record<string, unknown>): Promise<MaestroAppServerThread>;\n\tupdateThreadMetadata(\n\t\tparams?: Record<string, unknown>,\n\t): Promise<MaestroAppServerThreadMetadataUpdateResult>;\n\tsetThreadName(\n\t\tparams?: Record<string, unknown>,\n\t): Promise<MaestroAppServerThreadMetadataUpdateResult>;\n\tgetThreadGoal(\n\t\tparams?: Record<string, unknown>,\n\t): Promise<MaestroAppServerThreadGoalResult>;\n\tsetThreadGoal(\n\t\tparams?: Record<string, unknown>,\n\t): Promise<MaestroAppServerThreadGoalResult>;\n\tclearThreadGoal(\n\t\tparams?: Record<string, unknown>,\n\t): Promise<MaestroAppServerThreadGoalResult>;\n\tstartThread(\n\t\tparams?: Record<string, unknown>,\n\t): Promise<MaestroAppServerThreadStartResult>;\n\tforkThread(\n\t\tparams?: Record<string, unknown>,\n\t): Promise<MaestroAppServerThreadForkResult>;\n\tarchiveThread(\n\t\tparams?: Record<string, unknown>,\n\t): Promise<MaestroAppServerThreadArchiveResult>;\n\tunarchiveThread(\n\t\tparams?: Record<string, unknown>,\n\t): Promise<MaestroAppServerThreadArchiveResult>;\n\tdeleteThread(\n\t\tparams?: Record<string, unknown>,\n\t): Promise<MaestroAppServerThreadDeleteResult>;\n\tlistTurns(\n\t\tparams?: Record<string, unknown>,\n\t): Promise<MaestroAppServerTurnsListResult>;\n}\n\nexport class MaestroAppServerError extends Error {\n\tconstructor(\n\t\treadonly code: number,\n\t\tmessage: string,\n\t) {\n\t\tsuper(message);\n\t\tthis.name = \"MaestroAppServerError\";\n\t}\n}\n\nfunction normalizeLimit(value: unknown): number {\n\tif (typeof value !== \"number\" || !Number.isFinite(value)) {\n\t\treturn DEFAULT_PAGE_LIMIT;\n\t}\n\treturn Math.min(MAX_PAGE_LIMIT, Math.max(1, Math.trunc(value)));\n}\n\nfunction encodeCursor(offset: number): string {\n\treturn Buffer.from(JSON.stringify({ offset }), \"utf8\").toString(\"base64url\");\n}\n\nfunction decodeCursor(value: unknown): number {\n\tif (value === undefined || value === null || value === \"\") {\n\t\treturn 0;\n\t}\n\tif (typeof value !== \"string\") {\n\t\tthrow new MaestroAppServerError(-32602, \"Invalid cursor\");\n\t}\n\ttry {\n\t\tconst decoded = JSON.parse(\n\t\t\tBuffer.from(value, \"base64url\").toString(\"utf8\"),\n\t\t);\n\t\tif (\n\t\t\ttypeof decoded === \"object\" &&\n\t\t\tdecoded !== null &&\n\t\t\ttypeof decoded.offset === \"number\" &&\n\t\t\tNumber.isFinite(decoded.offset) &&\n\t\t\tdecoded.offset >= 0\n\t\t) {\n\t\t\treturn Math.trunc(decoded.offset);\n\t\t}\n\t} catch {\n\t\t// Fall through to the normalized JSON-RPC error below.\n\t}\n\tthrow new MaestroAppServerError(-32602, \"Invalid cursor\");\n}\n\nfunction requireThreadId(params?: Record<string, unknown>): string {\n\tconst threadId = params?.threadId;\n\tif (typeof threadId !== \"string\" || threadId.length === 0) {\n\t\tthrow new MaestroAppServerError(-32602, \"Missing threadId\");\n\t}\n\treturn threadId;\n}\n\nfunction toThreadSummary(\n\tmetadata: SessionMetadata,\n\tsummary?: SessionSummary,\n): MaestroAppServerThreadSummary {\n\tconst archived = summary?.archived ?? metadata.archived ?? false;\n\tconst archivedAt = archived\n\t\t? (summary?.archivedAt ?? metadata.archivedAt)\n\t\t: undefined;\n\tconst thread: MaestroAppServerThreadSummary = {\n\t\tid: metadata.id,\n\t\tsource: \"session\",\n\t\tstatus: archived ? \"archived\" : \"notLoaded\",\n\t\ttitle: summary?.title ?? metadata.title ?? metadata.summary,\n\t\tsummary: metadata.summary,\n\t\tresumeSummary: summary?.resumeSummary ?? metadata.resumeSummary,\n\t\tmemoryExtractionHash:\n\t\t\tsummary?.memoryExtractionHash ?? metadata.memoryExtractionHash,\n\t\tsubject: metadata.subject,\n\t\tpath: metadata.path,\n\t\tcreatedAt: metadata.created.toISOString(),\n\t\tupdatedAt: metadata.modified.toISOString(),\n\t\tmessageCount: metadata.messageCount,\n\t\tfavorite: summary?.favorite ?? metadata.favorite,\n\t\ttags: summary?.tags ?? metadata.tags,\n\t\tarchived,\n\t};\n\tif (archivedAt) {\n\t\tthread.archivedAt = archivedAt;\n\t}\n\treturn thread;\n}\n\nfunction toThreadSummaryFromSessionSummary(\n\tsummary: SessionSummary,\n): MaestroAppServerThreadSummary {\n\tconst archived = summary.archived ?? false;\n\tconst thread: MaestroAppServerThreadSummary = {\n\t\tid: summary.id,\n\t\tsource: \"session\",\n\t\tstatus: archived ? \"archived\" : \"notLoaded\",\n\t\ttitle: summary.title ?? summary.subject,\n\t\tsummary: summary.summary ?? summary.title ?? summary.subject,\n\t\tresumeSummary: summary.resumeSummary,\n\t\tmemoryExtractionHash: summary.memoryExtractionHash,\n\t\tsubject: summary.subject,\n\t\tcreatedAt: summary.createdAt,\n\t\tupdatedAt: summary.updatedAt,\n\t\tmessageCount: summary.messageCount,\n\t\tfavorite: summary.favorite,\n\t\ttags: summary.tags,\n\t\tarchived,\n\t};\n\tif (archived && summary.archivedAt) {\n\t\tthread.archivedAt = summary.archivedAt;\n\t}\n\treturn thread;\n}\n\nfunction toThreadSummaryFromLoadedSession(loaded: {\n\tid: string;\n\tsubject?: string;\n\ttitle?: string;\n\tsummary?: string;\n\tresumeSummary?: string;\n\tmemoryExtractionHash?: string;\n\tcreatedAt: string;\n\tupdatedAt: string;\n\tmessageCount: number;\n\tfavorite: boolean;\n\ttags?: string[];\n\tarchived?: boolean;\n\tarchivedAt?: string;\n}): MaestroAppServerThreadSummary {\n\tconst archived = loaded.archived ?? false;\n\tconst thread: MaestroAppServerThreadSummary = {\n\t\tid: loaded.id,\n\t\tsource: \"session\",\n\t\tstatus: archived ? \"archived\" : \"notLoaded\",\n\t\ttitle: loaded.title ?? loaded.subject,\n\t\tsummary: loaded.summary ?? loaded.title ?? loaded.subject,\n\t\tresumeSummary: loaded.resumeSummary,\n\t\tmemoryExtractionHash: loaded.memoryExtractionHash,\n\t\tsubject: loaded.subject,\n\t\tcreatedAt: loaded.createdAt,\n\t\tupdatedAt: loaded.updatedAt,\n\t\tmessageCount: loaded.messageCount,\n\t\tfavorite: loaded.favorite,\n\t\ttags: loaded.tags,\n\t\tarchived,\n\t};\n\tif (archived && loaded.archivedAt) {\n\t\tthread.archivedAt = loaded.archivedAt;\n\t}\n\treturn thread;\n}\n\nfunction appMessageContent(message: AppMessage): unknown {\n\treturn \"content\" in message ? message.content : message;\n}\n\nfunction treeEntryToItem(entry: SessionTreeEntry): MaestroAppServerThreadItem {\n\tif (entry.type === \"message\") {\n\t\treturn {\n\t\t\tid: entry.id,\n\t\t\ttype: \"message\",\n\t\t\tparentId: entry.parentId,\n\t\t\ttimestamp: entry.timestamp,\n\t\t\trole: entry.message.role,\n\t\t\tcontent: appMessageContent(entry.message),\n\t\t};\n\t}\n\tif (entry.type === \"custom_message\") {\n\t\treturn {\n\t\t\tid: entry.id,\n\t\t\ttype: entry.customType,\n\t\t\tparentId: entry.parentId,\n\t\t\ttimestamp: entry.timestamp,\n\t\t\tcontent: entry.content,\n\t\t\tdata: entry.details,\n\t\t};\n\t}\n\treturn {\n\t\tid: entry.id,\n\t\ttype: entry.type,\n\t\tparentId: entry.parentId,\n\t\ttimestamp: entry.timestamp,\n\t\tdata: entry,\n\t};\n}\n\nexport function buildTurnsFromSessionEntries(\n\tentries: SessionEntry[],\n): MaestroAppServerTurn[] {\n\treturn turnsFromProjection(buildSessionGraphProjection(entries));\n}\n\nfunction turnsFromProjection(\n\tprojection: SessionGraphProjection,\n): MaestroAppServerTurn[] {\n\treturn projection.turns.map((turn) => ({\n\t\tid: turn.id,\n\t\tparentTurnId: turn.parentTurnId,\n\t\tstatus: turn.status,\n\t\tstartedAt: turn.startedAt,\n\t\tcompletedAt: turn.completedAt,\n\t\tsourceEntryIds: turn.sourceEntryIds,\n\t\ttoolCallIds: turn.toolCallIds,\n\t\titems: turn.entries.map(treeEntryToItem),\n\t}));\n}\n\nfunction graphFromProjection(\n\tprojection: SessionGraphProjection,\n): MaestroAppServerThreadGraph {\n\treturn {\n\t\tbranchId: projection.branchId,\n\t\tleafEntryId: projection.leafEntryId,\n\t\tactiveEntryIds: projection.activeEntryIds,\n\t\tcompactionSpans: projection.compactionSpans,\n\t};\n}\n\nfunction parseMessagesView(value: unknown): SessionMessagesView {\n\tif (value === undefined || value === null) {\n\t\treturn \"notLoaded\";\n\t}\n\tif (value === \"full\" || value === \"summary\" || value === \"notLoaded\") {\n\t\treturn value;\n\t}\n\tthrow new MaestroAppServerError(-32602, \"Invalid messagesView\");\n}\n\nfunction optionalTrimmedString(\n\tvalue: unknown,\n\tfield: string,\n): string | undefined {\n\tif (value === undefined || value === null) {\n\t\treturn undefined;\n\t}\n\tif (typeof value !== \"string\") {\n\t\tthrow new MaestroAppServerError(-32602, `Invalid ${field}`);\n\t}\n\treturn value.trim() || undefined;\n}\n\nfunction optionalBoolean(value: unknown, field: string): boolean | undefined {\n\tif (value === undefined || value === null) {\n\t\treturn undefined;\n\t}\n\tif (typeof value !== \"boolean\") {\n\t\tthrow new MaestroAppServerError(-32602, `Invalid ${field}`);\n\t}\n\treturn value;\n}\n\nfunction optionalStringArray(\n\tvalue: unknown,\n\tfield: string,\n): string[] | undefined {\n\tif (value === undefined || value === null) {\n\t\treturn undefined;\n\t}\n\tif (\n\t\t!Array.isArray(value) ||\n\t\tvalue.some((entry) => typeof entry !== \"string\")\n\t) {\n\t\tthrow new MaestroAppServerError(-32602, `Invalid ${field}`);\n\t}\n\treturn Array.from(\n\t\tnew Set(value.map((entry) => entry.trim()).filter(Boolean)),\n\t);\n}\n\nfunction requireThreadReference(store: SessionStore, threadId: string): string {\n\tconst sessionFile = store.getSessionFileById(threadId);\n\tif (!sessionFile) {\n\t\tthrow new MaestroAppServerError(-32004, \"Thread not found\");\n\t}\n\treturn sessionFile;\n}\n\nasync function requireExistingThreadReference(\n\tstore: SessionStore,\n\tthreadId: string,\n): Promise<string> {\n\tconst sessionFile = requireThreadReference(store, threadId);\n\tconst loaded = await store.loadSession(threadId, {\n\t\tmessagesView: \"notLoaded\",\n\t});\n\tif (!loaded) {\n\t\tthrow new MaestroAppServerError(-32004, \"Thread not found\");\n\t}\n\treturn sessionFile;\n}\n\nasync function flushSessionWrites(store: SessionStore): Promise<void> {\n\tawait store.flush?.();\n}\n\nasync function restoreSessionBinding(\n\tstore: SessionStore,\n\tsessionReference: string | undefined,\n\tleafId?: string | null,\n): Promise<void> {\n\tif (!sessionReference) {\n\t\treturn;\n\t}\n\tconst dbSessionId = sessionReference.startsWith(\"db:\")\n\t\t? sessionReference.slice(\"db:\".length)\n\t\t: undefined;\n\tlet restored = false;\n\tif (dbSessionId && store.resumeSession) {\n\t\trestored = await store.resumeSession(dbSessionId);\n\t}\n\tif (!restored) {\n\t\tawait store.setSessionFile?.(sessionReference);\n\t}\n\tif (leafId === null) {\n\t\tawait store.resetLeaf?.();\n\t} else if (leafId && store.branch) {\n\t\tawait store.branch(leafId);\n\t}\n}\n\nfunction getCurrentLeafId(store: SessionStore): string | null {\n\treturn store.getLeafId?.() ?? store.getCurrentLeafId?.() ?? null;\n}\n\nfunction isActiveThreadSessionFile(\n\tstore: SessionStore,\n\tsessionFile: string,\n): boolean {\n\tconst activeSessionFile = store.getSessionFile?.();\n\tif (!activeSessionFile) {\n\t\treturn false;\n\t}\n\treturn resolve(activeSessionFile) === resolve(sessionFile);\n}\n\ninterface ThreadMetadataExpectation {\n\ttitle?: string;\n\tsummary?: string;\n\tresumeSummary?: string;\n\tfavorite?: boolean;\n\ttags?: string[];\n}\n\nasync function summarizeThreadAfterMutation(\n\tstore: SessionStore,\n\tthreadId: string,\n): Promise<MaestroAppServerThreadSummary> {\n\tawait flushSessionWrites(store);\n\tconst loaded = await store.loadSession(threadId, {\n\t\tmessagesView: \"notLoaded\",\n\t});\n\tif (!loaded) {\n\t\tthrow new MaestroAppServerError(-32004, \"Thread not found\");\n\t}\n\tconst summary = toThreadSummaryFromLoadedSession(loaded);\n\tconst sessionFile = store.getSessionFileById(threadId);\n\tif (sessionFile && !sessionFile.startsWith(\"db:\")) {\n\t\tsummary.path = sessionFile;\n\t}\n\treturn summary;\n}\n\nfunction tagsEqual(left: string[] | undefined, right: string[] | undefined) {\n\tif (left === undefined || right === undefined) {\n\t\treturn left === right;\n\t}\n\treturn (\n\t\tleft.length === right.length &&\n\t\tleft.every((value, index) => value === right[index])\n\t);\n}\n\nfunction verifyThreadMetadataPersisted(\n\tthread: MaestroAppServerThreadSummary,\n\texpected: ThreadMetadataExpectation,\n): void {\n\tconst persisted =\n\t\t(expected.title === undefined || thread.title === expected.title) &&\n\t\t(expected.summary === undefined || thread.summary === expected.summary) &&\n\t\t(expected.resumeSummary === undefined ||\n\t\t\tthread.resumeSummary === expected.resumeSummary) &&\n\t\t(expected.favorite === undefined ||\n\t\t\tthread.favorite === expected.favorite) &&\n\t\t(expected.tags === undefined || tagsEqual(thread.tags, expected.tags));\n\tif (!persisted) {\n\t\tthrow new MaestroAppServerError(\n\t\t\t-32000,\n\t\t\t\"Thread metadata update was not persisted\",\n\t\t);\n\t}\n}\n\nfunction latestGoalFromEntries(\n\tentries: SessionEntry[],\n): MaestroAppServerThreadGoal | null {\n\tlet goal: MaestroAppServerThreadGoal | null = null;\n\tfor (const entry of entries) {\n\t\tif (entry.type !== \"session_meta\" || entry.appServerGoal === undefined) {\n\t\t\tcontinue;\n\t\t}\n\t\tgoal = entry.appServerGoal;\n\t}\n\treturn goal;\n}\n\nfunction goalsEqual(\n\tactual: MaestroAppServerThreadGoal | null,\n\texpected: MaestroAppServerThreadGoal | null,\n): boolean {\n\tif (actual === null || expected === null) {\n\t\treturn actual === expected;\n\t}\n\treturn (\n\t\tactual.objective === expected.objective &&\n\t\tactual.status === expected.status &&\n\t\tactual.tokenBudget === expected.tokenBudget &&\n\t\tactual.createdAt === expected.createdAt &&\n\t\tactual.updatedAt === expected.updatedAt\n\t);\n}\n\nasync function verifyThreadGoalPersisted(\n\tstore: SessionStore,\n\tthreadId: string,\n\texpected: MaestroAppServerThreadGoal | null,\n): Promise<MaestroAppServerThreadGoal | null> {\n\tconst persisted = await loadThreadGoal(store, threadId);\n\tif (!goalsEqual(persisted, expected)) {\n\t\tthrow new MaestroAppServerError(\n\t\t\t-32000,\n\t\t\t\"Thread goal update was not persisted\",\n\t\t);\n\t}\n\treturn persisted;\n}\n\nfunction normalizeGoalStatus(\n\tvalue: unknown,\n): MaestroAppServerThreadGoal[\"status\"] {\n\tif (value === undefined || value === null) {\n\t\treturn \"active\";\n\t}\n\tif (value === \"active\" || value === \"complete\" || value === \"cancelled\") {\n\t\treturn value;\n\t}\n\tthrow new MaestroAppServerError(-32602, \"Invalid status\");\n}\n\nfunction normalizeTokenBudget(value: unknown): number | undefined {\n\tif (value === undefined || value === null) {\n\t\treturn undefined;\n\t}\n\tif (\n\t\ttypeof value !== \"number\" ||\n\t\t!Number.isFinite(value) ||\n\t\tvalue <= 0 ||\n\t\t!Number.isInteger(value)\n\t) {\n\t\tthrow new MaestroAppServerError(-32602, \"Invalid tokenBudget\");\n\t}\n\treturn value;\n}\n\nfunction modelToAppServerModel(model: RegisteredModel): MaestroAppServerModel {\n\tconst responsesApi =\n\t\tmodel.api === \"openai-responses\" || model.api === \"openai-codex-responses\";\n\tconst codexBackend =\n\t\tmodel.api === \"openai-codex-responses\" ||\n\t\tmodel.api === \"openai-codex-app-server\";\n\treturn {\n\t\tid: model.id,\n\t\tprovider: model.provider,\n\t\tname: model.name || model.id,\n\t\tapi: model.api,\n\t\tcontextWindow: model.contextWindow,\n\t\tmaxTokens: model.maxTokens,\n\t\tcost: model.cost,\n\t\tsource: model.source,\n\t\tsupportedReasoningEfforts: model.reasoning\n\t\t\t? [\"minimal\", \"low\", \"medium\", \"high\", \"ultra\"]\n\t\t\t: undefined,\n\t\tdefaultReasoningEffort: model.reasoning ? \"medium\" : undefined,\n\t\tcapabilities: {\n\t\t\tstreaming: true,\n\t\t\ttools: model.toolUse === true,\n\t\t\tvision: model.input?.includes(\"image\") || false,\n\t\t\treasoning: model.reasoning || false,\n\t\t\tresponsesApi,\n\t\t\tcodexBackend,\n\t\t\tlocal: model.isLocal,\n\t\t},\n\t};\n}\n\nfunction mergeProviderCapabilities(\n\tcurrent: MaestroAppServerModelProviderCapabilities | undefined,\n\tmodel: MaestroAppServerModel,\n\tproviderName: string,\n): MaestroAppServerModelProviderCapabilities {\n\tconst capabilities = current?.capabilities ?? {\n\t\tstreaming: false,\n\t\ttools: false,\n\t\tvision: false,\n\t\treasoning: false,\n\t\tresponsesApi: false,\n\t\tcodexBackend: false,\n\t\tlocal: false,\n\t};\n\tconst apis = new Set(current?.apis ?? []);\n\tapis.add(model.api);\n\treturn {\n\t\tid: model.provider,\n\t\tname: current?.name ?? providerName,\n\t\tapis: Array.from(apis).sort(),\n\t\tmodelCount: (current?.modelCount ?? 0) + 1,\n\t\tcapabilities: {\n\t\t\tstreaming: capabilities.streaming || model.capabilities.streaming,\n\t\t\ttools: capabilities.tools || model.capabilities.tools,\n\t\t\tvision: capabilities.vision || model.capabilities.vision,\n\t\t\treasoning: capabilities.reasoning || model.capabilities.reasoning,\n\t\t\tresponsesApi:\n\t\t\t\tcapabilities.responsesApi || model.capabilities.responsesApi,\n\t\t\tcodexBackend:\n\t\t\t\tcapabilities.codexBackend || model.capabilities.codexBackend,\n\t\t\tlocal: capabilities.local || model.capabilities.local,\n\t\t},\n\t};\n}\n\nexport function createMaestroAppServerSessionApi(\n\tstore: SessionStore,\n\toptions: MaestroAppServerSessionApiOptions = {},\n): MaestroAppServerSessionApi {\n\tconst hostControl =\n\t\toptions.hostControl === false\n\t\t\t? undefined\n\t\t\t: (options.hostControl ??\n\t\t\t\tcreateMaestroAppServerHostControl({\n\t\t\t\t\tonNotification: options.onNotification,\n\t\t\t\t}));\n\tconst policyControl =\n\t\toptions.policyControl === false\n\t\t\t? undefined\n\t\t\t: (options.policyControl ?? createMaestroAppServerPolicyControl());\n\tconst networkGovernance =\n\t\toptions.networkGovernance === false\n\t\t\t? undefined\n\t\t\t: (options.networkGovernance ??\n\t\t\t\tcreateMaestroAppServerNetworkGovernance());\n\tconst sandboxCheck =\n\t\toptions.sandboxCheck === false\n\t\t\t? undefined\n\t\t\t: (options.sandboxCheck ?? createMaestroAppServerSandboxCheck());\n\tconst pluginBundles =\n\t\toptions.pluginBundles === false\n\t\t\t? undefined\n\t\t\t: (options.pluginBundles ?? createMaestroAppServerPluginBundleApi());\n\tconst daemonLifecycle =\n\t\toptions.daemonLifecycle === false\n\t\t\t? undefined\n\t\t\t: (options.daemonLifecycle ?? createMaestroAppServerDaemonLifecycle());\n\tconst protocolModes =\n\t\toptions.protocolModes === false\n\t\t\t? undefined\n\t\t\t: (options.protocolModes ?? createMaestroAppServerProtocolModes());\n\tconst daemonLifecycleCapabilities = daemonLifecycle?.capabilities() ?? {\n\t\tdaemonStatus: false,\n\t\tremoteControlStatus: false,\n\t\tremoteControlLease: false,\n\t\tremoteControlDrain: false,\n\t};\n\tconst canUpdateThreadMetadata = Boolean(\n\t\tstore.setSessionTitle &&\n\t\t\tstore.saveSessionSummary &&\n\t\t\tstore.saveSessionResumeSummary &&\n\t\t\tstore.setSessionFavorite &&\n\t\t\tstore.setSessionTags,\n\t);\n\tconst canSetThreadName = Boolean(store.setSessionTitle);\n\tconst canUseThreadGoals = Boolean(\n\t\tstore.setSessionAppServerGoal && store.loadEntries,\n\t);\n\tconst canMutateSessionPersistence = store.canCreateSession?.() ?? true;\n\tconst externalAgentImport =\n\t\toptions.externalAgentImport === false || !canMutateSessionPersistence\n\t\t\t? undefined\n\t\t\t: (options.externalAgentImport ??\n\t\t\t\tcreateMaestroAppServerExternalAgentImport({ store }));\n\tconst canStartThreads = Boolean(\n\t\tstore.createSession && canMutateSessionPersistence,\n\t);\n\tconst canForkThreads = Boolean(\n\t\tcanMutateSessionPersistence &&\n\t\t\tstore.createBranchedSession &&\n\t\t\tstore.setSessionFile,\n\t);\n\tconst canArchiveThreads = Boolean(\n\t\tcanMutateSessionPersistence && store.setSessionArchived,\n\t);\n\tconst canDeleteThreads = Boolean(\n\t\tcanMutateSessionPersistence && store.deleteSession,\n\t);\n\tconst canUseHostControl = Boolean(hostControl);\n\tconst canUseFilesystemWatch = Boolean(hostControl?.supportsWatch());\n\tconst canUsePolicyControl = Boolean(policyControl);\n\tconst canUseNetworkGovernance = Boolean(networkGovernance);\n\tconst canUseSandboxCheck = Boolean(sandboxCheck);\n\tconst canUseExternalAgentImport = Boolean(externalAgentImport);\n\tconst canUsePluginBundles = Boolean(pluginBundles);\n\n\treturn {\n\t\tinitialize() {\n\t\t\treturn {\n\t\t\t\tprotocolVersion: maestroAppServerProtocolVersion,\n\t\t\t\tsupportedProtocolVersions: [\n\t\t\t\t\t...maestroAppServerSupportedProtocolVersions,\n\t\t\t\t],\n\t\t\t\tserverInfo: {\n\t\t\t\t\tname: \"maestro\",\n\t\t\t\t},\n\t\t\t\tcapabilities: {\n\t\t\t\t\tsessions: true,\n\t\t\t\t\tprotocolModes: Boolean(protocolModes),\n\t\t\t\t\tmodelList: true,\n\t\t\t\t\tmodelProviderCapabilities: true,\n\t\t\t\t\tmanagedPolicy: canUsePolicyControl,\n\t\t\t\t\trequirements: canUsePolicyControl,\n\t\t\t\t\tnetworkProxy: canUseNetworkGovernance,\n\t\t\t\t\tnetworkAudit: canUseNetworkGovernance,\n\t\t\t\t\tsandboxProbe: canUseSandboxCheck,\n\t\t\t\t\tsandboxCheck: canUseSandboxCheck,\n\t\t\t\t\texternalAgentImport: canUseExternalAgentImport,\n\t\t\t\t\tpluginBundles: canUsePluginBundles,\n\t\t\t\t\tdaemonStatus: daemonLifecycleCapabilities.daemonStatus,\n\t\t\t\t\tremoteControlStatus: daemonLifecycleCapabilities.remoteControlStatus,\n\t\t\t\t\tremoteControlLease: daemonLifecycleCapabilities.remoteControlLease,\n\t\t\t\t\tremoteControlDrain: daemonLifecycleCapabilities.remoteControlDrain,\n\t\t\t\t\tcommandExec: canUseHostControl,\n\t\t\t\t\tcommandProcessControl: canUseHostControl,\n\t\t\t\t\tfilesystem: canUseHostControl,\n\t\t\t\t\tfilesystemWatch: canUseFilesystemWatch,\n\t\t\t\t\tthreadList: true,\n\t\t\t\t\tthreadRead: true,\n\t\t\t\t\tthreadMetadataUpdate: canUpdateThreadMetadata,\n\t\t\t\t\tthreadNameSet: canSetThreadName,\n\t\t\t\t\tthreadGoals: canUseThreadGoals,\n\t\t\t\t\tthreadStart: canStartThreads,\n\t\t\t\t\tthreadFork: canForkThreads,\n\t\t\t\t\tthreadArchive: canArchiveThreads,\n\t\t\t\t\tthreadDelete: canDeleteThreads,\n\t\t\t\t\tturnsList: true,\n\t\t\t\t},\n\t\t\t};\n\t\t},\n\n\t\tcheckProtocolMode(method) {\n\t\t\treturn protocolModes?.checkMethod(method) ?? { allowed: true };\n\t\t},\n\n\t\tasync listProtocolModes(params = {}) {\n\t\t\tif (!protocolModes) {\n\t\t\t\tthrow new MaestroAppServerError(\n\t\t\t\t\t-32601,\n\t\t\t\t\t\"Protocol modes are not available\",\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn protocolModes.listModes(params);\n\t\t},\n\n\t\tasync setProtocolMode(params = {}) {\n\t\t\tif (!protocolModes) {\n\t\t\t\tthrow new MaestroAppServerError(\n\t\t\t\t\t-32601,\n\t\t\t\t\t\"Protocol modes are not available\",\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn protocolModes.setMode(params);\n\t\t},\n\n\t\tasync readPolicy() {\n\t\t\tif (!policyControl) {\n\t\t\t\tthrow new MaestroAppServerError(\n\t\t\t\t\t-32601,\n\t\t\t\t\t\"Managed policy is not available\",\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn policyControl.readPolicy();\n\t\t},\n\n\t\tasync checkPolicy(params = {}) {\n\t\t\tif (!policyControl) {\n\t\t\t\tthrow new MaestroAppServerError(\n\t\t\t\t\t-32601,\n\t\t\t\t\t\"Managed policy is not available\",\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn policyControl.checkPolicy(params);\n\t\t},\n\n\t\tasync listRequirements() {\n\t\t\tif (!policyControl) {\n\t\t\t\tthrow new MaestroAppServerError(\n\t\t\t\t\t-32601,\n\t\t\t\t\t\"Requirements are not available\",\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn policyControl.listRequirements();\n\t\t},\n\n\t\tasync fetchNetwork(params = {}) {\n\t\t\tif (!networkGovernance) {\n\t\t\t\tthrow new MaestroAppServerError(\n\t\t\t\t\t-32601,\n\t\t\t\t\t\"Network proxy is not available\",\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn networkGovernance.fetch(params);\n\t\t},\n\n\t\tasync listNetworkAudit(params = {}) {\n\t\t\tif (!networkGovernance) {\n\t\t\t\tthrow new MaestroAppServerError(\n\t\t\t\t\t-32601,\n\t\t\t\t\t\"Network audit is not available\",\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn networkGovernance.listAudit(params);\n\t\t},\n\n\t\tasync probeSandbox(params = {}) {\n\t\t\tif (!sandboxCheck) {\n\t\t\t\tthrow new MaestroAppServerError(\n\t\t\t\t\t-32601,\n\t\t\t\t\t\"Sandbox probe is not available\",\n\t\t\t\t);\n\t\t\t}\n\t\t\tnormalizeSandboxCheckParams(params);\n\t\t\treturn sandboxCheck.probe();\n\t\t},\n\n\t\tasync runSandboxCheck(params = {}) {\n\t\t\tif (!sandboxCheck) {\n\t\t\t\tthrow new MaestroAppServerError(\n\t\t\t\t\t-32601,\n\t\t\t\t\t\"Sandbox check is not available\",\n\t\t\t\t);\n\t\t\t}\n\t\t\tconst normalizedParams = normalizeSandboxCheckParams(params);\n\t\t\treturn sandboxCheck.runCheck(normalizedParams);\n\t\t},\n\n\t\tasync importExternalAgent(params = {}) {\n\t\t\tif (!externalAgentImport) {\n\t\t\t\tthrow new MaestroAppServerError(\n\t\t\t\t\t-32601,\n\t\t\t\t\t\"External agent import is not available\",\n\t\t\t\t);\n\t\t\t}\n\t\t\tconst normalizedParams = normalizeExternalAgentImportParams(params);\n\t\t\treturn externalAgentImport.importBundle(normalizedParams);\n\t\t},\n\n\t\tasync listPluginBundles(params = {}) {\n\t\t\tif (!pluginBundles) {\n\t\t\t\tthrow new MaestroAppServerError(\n\t\t\t\t\t-32601,\n\t\t\t\t\t\"Plugin bundle lifecycle is not available\",\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn pluginBundles.listBundles(params);\n\t\t},\n\n\t\tasync installPluginBundle(params = {}) {\n\t\t\tif (!pluginBundles) {\n\t\t\t\tthrow new MaestroAppServerError(\n\t\t\t\t\t-32601,\n\t\t\t\t\t\"Plugin bundle lifecycle is not available\",\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn pluginBundles.installBundle(params);\n\t\t},\n\n\t\tasync removePluginBundle(params = {}) {\n\t\t\tif (!pluginBundles) {\n\t\t\t\tthrow new MaestroAppServerError(\n\t\t\t\t\t-32601,\n\t\t\t\t\t\"Plugin bundle lifecycle is not available\",\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn pluginBundles.removeBundle(params);\n\t\t},\n\n\t\tasync readDaemonStatus(params = {}) {\n\t\t\tif (!daemonLifecycle) {\n\t\t\t\tthrow new MaestroAppServerError(\n\t\t\t\t\t-32601,\n\t\t\t\t\t\"Daemon lifecycle is not available\",\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn daemonLifecycle.status(params);\n\t\t},\n\n\t\tasync readRemoteControlStatus(params = {}) {\n\t\t\tif (!daemonLifecycle) {\n\t\t\t\tthrow new MaestroAppServerError(\n\t\t\t\t\t-32601,\n\t\t\t\t\t\"Remote control lifecycle is not available\",\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn daemonLifecycle.remoteControlStatus(params);\n\t\t},\n\n\t\tasync readRemoteControlLease(params = {}) {\n\t\t\tif (!daemonLifecycle) {\n\t\t\t\tthrow new MaestroAppServerError(\n\t\t\t\t\t-32601,\n\t\t\t\t\t\"Remote control lease is not available\",\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn daemonLifecycle.readLease(params);\n\t\t},\n\n\t\tasync heartbeatRemoteControlLease(params = {}) {\n\t\t\tif (!daemonLifecycle) {\n\t\t\t\tthrow new MaestroAppServerError(\n\t\t\t\t\t-32601,\n\t\t\t\t\t\"Remote control lease is not available\",\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn daemonLifecycle.heartbeatLease(params);\n\t\t},\n\n\t\tasync drainRemoteControl(params = {}) {\n\t\t\tif (!daemonLifecycle) {\n\t\t\t\tthrow new MaestroAppServerError(\n\t\t\t\t\t-32601,\n\t\t\t\t\t\"Remote control drain is not available\",\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn daemonLifecycle.drain(params);\n\t\t},\n\n\t\tasync execCommand(params = {}) {\n\t\t\tif (!hostControl) {\n\t\t\t\tthrow new MaestroAppServerError(\n\t\t\t\t\t-32601,\n\t\t\t\t\t\"Command exec is not available\",\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn hostControl.execCommand(params);\n\t\t},\n\n\t\tasync writeCommandStdin(params = {}) {\n\t\t\tif (!hostControl) {\n\t\t\t\tthrow new MaestroAppServerError(\n\t\t\t\t\t-32601,\n\t\t\t\t\t\"Command process control is not available\",\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn hostControl.writeCommandStdin(params);\n\t\t},\n\n\t\tasync terminateCommand(params = {}) {\n\t\t\tif (!hostControl) {\n\t\t\t\tthrow new MaestroAppServerError(\n\t\t\t\t\t-32601,\n\t\t\t\t\t\"Command process control is not available\",\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn hostControl.terminateCommand(params);\n\t\t},\n\n\t\tasync readFile(params = {}) {\n\t\t\tif (!hostControl) {\n\t\t\t\tthrow new MaestroAppServerError(-32601, \"Filesystem is not available\");\n\t\t\t}\n\t\t\treturn hostControl.readFile(params);\n\t\t},\n\n\t\tasync writeFile(params = {}) {\n\t\t\tif (!hostControl) {\n\t\t\t\tthrow new MaestroAppServerError(-32601, \"Filesystem is not available\");\n\t\t\t}\n\t\t\treturn hostControl.writeFile(params);\n\t\t},\n\n\t\tasync readDirectory(params = {}) {\n\t\t\tif (!hostControl) {\n\t\t\t\tthrow new MaestroAppServerError(-32601, \"Filesystem is not available\");\n\t\t\t}\n\t\t\treturn hostControl.readDirectory(params);\n\t\t},\n\n\t\tasync getMetadata(params = {}) {\n\t\t\tif (!hostControl) {\n\t\t\t\tthrow new MaestroAppServerError(-32601, \"Filesystem is not available\");\n\t\t\t}\n\t\t\treturn hostControl.getMetadata(params);\n\t\t},\n\n\t\tasync createDirectory(params = {}) {\n\t\t\tif (!hostControl) {\n\t\t\t\tthrow new MaestroAppServerError(-32601, \"Filesystem is not available\");\n\t\t\t}\n\t\t\treturn hostControl.createDirectory(params);\n\t\t},\n\n\t\tasync remove(params = {}) {\n\t\t\tif (!hostControl) {\n\t\t\t\tthrow new MaestroAppServerError(-32601, \"Filesystem is not available\");\n\t\t\t}\n\t\t\treturn hostControl.remove(params);\n\t\t},\n\n\t\tasync copy(params = {}) {\n\t\t\tif (!hostControl) {\n\t\t\t\tthrow new MaestroAppServerError(-32601, \"Filesystem is not available\");\n\t\t\t}\n\t\t\treturn hostControl.copy(params);\n\t\t},\n\n\t\tasync watch(params = {}) {\n\t\t\tif (!hostControl) {\n\t\t\t\tthrow new MaestroAppServerError(\n\t\t\t\t\t-32601,\n\t\t\t\t\t\"Filesystem watch is not available\",\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn hostControl.watch(params);\n\t\t},\n\n\t\tasync unwatch(params = {}) {\n\t\t\tif (!hostControl) {\n\t\t\t\tthrow new MaestroAppServerError(\n\t\t\t\t\t-32601,\n\t\t\t\t\t\"Filesystem watch is not available\",\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn hostControl.unwatch(params);\n\t\t},\n\n\t\tasync listModels(params = {}) {\n\t\t\tconst provider = optionalTrimmedString(params.provider, \"provider\");\n\t\t\tconst api = optionalTrimmedString(params.api, \"api\");\n\t\t\tconst models = getRegisteredModels()\n\t\t\t\t.filter((model) => !provider || model.provider === provider)\n\t\t\t\t.filter((model) => !api || model.api === api)\n\t\t\t\t.map(modelToAppServerModel)\n\t\t\t\t.sort((left, right) =>\n\t\t\t\t\t`${left.provider}/${left.id}`.localeCompare(\n\t\t\t\t\t\t`${right.provider}/${right.id}`,\n\t\t\t\t\t),\n\t\t\t\t);\n\t\t\treturn { models };\n\t\t},\n\n\t\tasync readModelProviderCapabilities(params = {}) {\n\t\t\tconst provider = optionalTrimmedString(params.provider, \"provider\");\n\t\t\tconst providers = new Map<\n\t\t\t\tstring,\n\t\t\t\tMaestroAppServerModelProviderCapabilities\n\t\t\t>();\n\t\t\tfor (const model of getRegisteredModels()) {\n\t\t\t\tif (provider && model.provider !== provider) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tconst appServerModel = modelToAppServerModel(model);\n\t\t\t\tproviders.set(\n\t\t\t\t\tmodel.provider,\n\t\t\t\t\tmergeProviderCapabilities(\n\t\t\t\t\t\tproviders.get(model.provider),\n\t\t\t\t\t\tappServerModel,\n\t\t\t\t\t\tmodel.providerName || model.provider,\n\t\t\t\t\t),\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn {\n\t\t\t\tproviders: Array.from(providers.values()).sort((left, right) =>\n\t\t\t\t\tleft.id.localeCompare(right.id),\n\t\t\t\t),\n\t\t\t};\n\t\t},\n\n\t\tasync listThreads(params = {}) {\n\t\t\tconst limit = normalizeLimit(params.limit);\n\t\t\tconst offset = decodeCursor(params.cursor);\n\t\t\tconst includeArchived =\n\t\t\t\toptionalBoolean(params.includeArchived, \"includeArchived\") ?? false;\n\t\t\tconst metadata = store.loadAllSessions();\n\t\t\tif (metadata.length === 0) {\n\t\t\t\tconst page: SessionSummary[] = [];\n\t\t\t\tlet rawOffset = offset;\n\t\t\t\tlet cursorAfterPage = offset;\n\t\t\t\tlet hasMoreVisible = false;\n\t\t\t\tlet exhausted = false;\n\t\t\t\twhile (!hasMoreVisible && !exhausted) {\n\t\t\t\t\tconst summaries = await store.listSessions({\n\t\t\t\t\t\tlimit: limit + 1,\n\t\t\t\t\t\toffset: rawOffset,\n\t\t\t\t\t});\n\t\t\t\t\texhausted = summaries.length <= limit;\n\t\t\t\t\tfor (const summary of summaries) {\n\t\t\t\t\t\trawOffset += 1;\n\t\t\t\t\t\tif (includeArchived || !summary.archived) {\n\t\t\t\t\t\t\tif (page.length < limit) {\n\t\t\t\t\t\t\t\tpage.push(summary);\n\t\t\t\t\t\t\t\tcursorAfterPage = rawOffset;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\thasMoreVisible = true;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (summaries.length === 0) {\n\t\t\t\t\t\texhausted = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn {\n\t\t\t\t\tthreads: page.map(toThreadSummaryFromSessionSummary),\n\t\t\t\t\tnextCursor: hasMoreVisible ? encodeCursor(cursorAfterPage) : null,\n\t\t\t\t};\n\t\t\t}\n\t\t\tconst visible = includeArchived\n\t\t\t\t? metadata\n\t\t\t\t: metadata.filter((session) => !session.archived);\n\t\t\tconst page = visible.slice(offset, offset + limit);\n\t\t\tconst nextOffset = offset + page.length;\n\t\t\treturn {\n\t\t\t\tthreads: page.map((session) => toThreadSummary(session)),\n\t\t\t\tnextCursor:\n\t\t\t\t\tnextOffset < visible.length ? encodeCursor(nextOffset) : null,\n\t\t\t};\n\t\t},\n\n\t\tasync readThread(params = {}) {\n\t\t\tconst threadId = requireThreadId(params);\n\t\t\tconst includeTurns = params.includeTurns === true;\n\t\t\tconst messagesView = parseMessagesView(params.messagesView);\n\t\t\tconst loaded = await store.loadSession(threadId, { messagesView });\n\t\t\tif (!loaded) {\n\t\t\t\tthrow new MaestroAppServerError(-32004, \"Thread not found\");\n\t\t\t}\n\t\t\tconst thread: MaestroAppServerThread = {\n\t\t\t\t...toThreadSummaryFromLoadedSession(loaded),\n\t\t\t\tmessagesView: loaded.messagesView,\n\t\t\t};\n\t\t\tconst sessionFile = store.getSessionFileById(threadId);\n\t\t\tif (sessionFile && !sessionFile.startsWith(\"db:\")) {\n\t\t\t\tthread.path = sessionFile;\n\t\t\t}\n\t\t\tif (includeTurns) {\n\t\t\t\tconst projection = await loadProjectionForThread(store, threadId);\n\t\t\t\tthread.turns = turnsFromProjection(projection);\n\t\t\t\tthread.graph = graphFromProjection(projection);\n\t\t\t}\n\t\t\treturn thread;\n\t\t},\n\n\t\tasync updateThreadMetadata(params = {}) {\n\t\t\tconst threadId = requireThreadId(params);\n\t\t\tconst title = optionalTrimmedString(params.title, \"title\");\n\t\t\tconst summary = optionalTrimmedString(params.summary, \"summary\");\n\t\t\tconst resumeSummary = optionalTrimmedString(\n\t\t\t\tparams.resumeSummary,\n\t\t\t\t\"resumeSummary\",\n\t\t\t);\n\t\t\tconst favorite = optionalBoolean(params.favorite, \"favorite\");\n\t\t\tconst tags = optionalStringArray(params.tags, \"tags\");\n\t\t\tconst sessionFile = await requireExistingThreadReference(store, threadId);\n\n\t\t\tif (title !== undefined) {\n\t\t\t\tif (!store.setSessionTitle) {\n\t\t\t\t\tthrow new MaestroAppServerError(\n\t\t\t\t\t\t-32601,\n\t\t\t\t\t\t\"Thread title updates are not available\",\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tawait store.setSessionTitle(sessionFile, title);\n\t\t\t}\n\t\t\tif (summary !== undefined) {\n\t\t\t\tif (!store.saveSessionSummary) {\n\t\t\t\t\tthrow new MaestroAppServerError(\n\t\t\t\t\t\t-32601,\n\t\t\t\t\t\t\"Thread summary updates are not available\",\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tawait store.saveSessionSummary(summary, sessionFile);\n\t\t\t}\n\t\t\tif (resumeSummary !== undefined) {\n\t\t\t\tif (!store.saveSessionResumeSummary) {\n\t\t\t\t\tthrow new MaestroAppServerError(\n\t\t\t\t\t\t-32601,\n\t\t\t\t\t\t\"Thread resume summary updates are not available\",\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tawait store.saveSessionResumeSummary(resumeSummary, sessionFile);\n\t\t\t}\n\t\t\tif (favorite !== undefined) {\n\t\t\t\tif (!store.setSessionFavorite) {\n\t\t\t\t\tthrow new MaestroAppServerError(\n\t\t\t\t\t\t-32601,\n\t\t\t\t\t\t\"Thread favorite updates are not available\",\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tawait store.setSessionFavorite(sessionFile, favorite);\n\t\t\t}\n\t\t\tif (tags !== undefined) {\n\t\t\t\tif (!store.setSessionTags) {\n\t\t\t\t\tthrow new MaestroAppServerError(\n\t\t\t\t\t\t-32601,\n\t\t\t\t\t\t\"Thread tag updates are not available\",\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tawait store.setSessionTags(sessionFile, tags);\n\t\t\t}\n\t\t\tconst thread = await summarizeThreadAfterMutation(store, threadId);\n\t\t\tverifyThreadMetadataPersisted(thread, {\n\t\t\t\ttitle,\n\t\t\t\tsummary,\n\t\t\t\tresumeSummary,\n\t\t\t\tfavorite,\n\t\t\t\ttags,\n\t\t\t});\n\t\t\treturn { thread };\n\t\t},\n\n\t\tasync setThreadName(params = {}) {\n\t\t\tconst threadId = requireThreadId(params);\n\t\t\tconst name = optionalTrimmedString(params.name, \"name\");\n\t\t\tif (!name) {\n\t\t\t\tthrow new MaestroAppServerError(-32602, \"Missing name\");\n\t\t\t}\n\t\t\tconst sessionFile = await requireExistingThreadReference(store, threadId);\n\t\t\tif (!store.setSessionTitle) {\n\t\t\t\tthrow new MaestroAppServerError(\n\t\t\t\t\t-32601,\n\t\t\t\t\t\"Thread name updates are not available\",\n\t\t\t\t);\n\t\t\t}\n\t\t\tawait store.setSessionTitle(sessionFile, name);\n\t\t\tconst thread = await summarizeThreadAfterMutation(store, threadId);\n\t\t\tverifyThreadMetadataPersisted(thread, { title: name });\n\t\t\treturn { thread };\n\t\t},\n\n\t\tasync getThreadGoal(params = {}) {\n\t\t\tconst threadId = requireThreadId(params);\n\t\t\treturn {\n\t\t\t\tthreadId,\n\t\t\t\tgoal: await loadThreadGoal(store, threadId),\n\t\t\t};\n\t\t},\n\n\t\tasync setThreadGoal(params = {}) {\n\t\t\tconst threadId = requireThreadId(params);\n\t\t\tconst sessionFile = await requireExistingThreadReference(store, threadId);\n\t\t\tconst objective = optionalTrimmedString(params.objective, \"objective\");\n\t\t\tif (!objective) {\n\t\t\t\tthrow new MaestroAppServerError(-32602, \"Missing objective\");\n\t\t\t}\n\t\t\tconst existing = await loadThreadGoal(store, threadId);\n\t\t\tconst now = new Date().toISOString();\n\t\t\tconst goal: MaestroAppServerThreadGoal = {\n\t\t\t\tobjective,\n\t\t\t\tstatus: normalizeGoalStatus(params.status),\n\t\t\t\ttokenBudget: normalizeTokenBudget(params.tokenBudget),\n\t\t\t\tcreatedAt: existing?.createdAt ?? now,\n\t\t\t\tupdatedAt: now,\n\t\t\t};\n\t\t\tif (!store.setSessionAppServerGoal) {\n\t\t\t\tthrow new MaestroAppServerError(\n\t\t\t\t\t-32601,\n\t\t\t\t\t\"Thread goal updates are not available\",\n\t\t\t\t);\n\t\t\t}\n\t\t\tawait store.setSessionAppServerGoal(sessionFile, goal);\n\t\t\tawait flushSessionWrites(store);\n\t\t\treturn {\n\t\t\t\tthreadId,\n\t\t\t\tgoal: await verifyThreadGoalPersisted(store, threadId, goal),\n\t\t\t};\n\t\t},\n\n\t\tasync clearThreadGoal(params = {}) {\n\t\t\tconst threadId = requireThreadId(params);\n\t\t\tconst sessionFile = await requireExistingThreadReference(store, threadId);\n\t\t\tif (!store.setSessionAppServerGoal) {\n\t\t\t\tthrow new MaestroAppServerError(\n\t\t\t\t\t-32601,\n\t\t\t\t\t\"Thread goal updates are not available\",\n\t\t\t\t);\n\t\t\t}\n\t\t\tawait store.setSessionAppServerGoal(sessionFile, null);\n\t\t\tawait flushSessionWrites(store);\n\t\t\tawait verifyThreadGoalPersisted(store, threadId, null);\n\t\t\treturn { threadId, goal: null };\n\t\t},\n\n\t\tasync startThread(params = {}) {\n\t\t\tconst createThreadSession = store.createSession;\n\t\t\tif (!canStartThreads || !createThreadSession) {\n\t\t\t\tthrow new MaestroAppServerError(\n\t\t\t\t\t-32601,\n\t\t\t\t\t\"Thread start is not available\",\n\t\t\t\t);\n\t\t\t}\n\t\t\tconst title = optionalTrimmedString(params.title, \"title\");\n\t\t\tconst previousSessionFile = store.getSessionFile?.();\n\t\t\tconst previousLeafId = getCurrentLeafId(store);\n\t\t\tlet created: Awaited<\n\t\t\t\tReturnType<NonNullable<SessionStore[\"createSession\"]>>\n\t\t\t>;\n\t\t\ttry {\n\t\t\t\tcreated = await createThreadSession.call(\n\t\t\t\t\tstore,\n\t\t\t\t\ttitle ? { title } : undefined,\n\t\t\t\t);\n\t\t\t} finally {\n\t\t\t\tawait restoreSessionBinding(store, previousSessionFile, previousLeafId);\n\t\t\t}\n\t\t\tawait flushSessionWrites(store);\n\t\t\treturn {\n\t\t\t\tthread: await summarizeThreadAfterMutation(store, created.id),\n\t\t\t};\n\t\t},\n\n\t\tasync forkThread(params = {}) {\n\t\t\tconst createBranchedSession = store.createBranchedSession;\n\t\t\tif (!canForkThreads || !createBranchedSession) {\n\t\t\t\tthrow new MaestroAppServerError(-32601, \"Thread fork is not available\");\n\t\t\t}\n\t\t\tconst threadId = requireThreadId(params);\n\t\t\tconst leafEntryId = optionalTrimmedString(\n\t\t\t\tparams.leafEntryId,\n\t\t\t\t\"leafEntryId\",\n\t\t\t);\n\t\t\tif (!leafEntryId) {\n\t\t\t\tthrow new MaestroAppServerError(-32602, \"Missing leafEntryId\");\n\t\t\t}\n\t\t\tconst title = optionalTrimmedString(params.title, \"title\");\n\t\t\tconst sessionFile = await requireExistingThreadReference(store, threadId);\n\t\t\tconst previousSessionFile = store.getSessionFile?.();\n\t\t\tconst previousLeafId = getCurrentLeafId(store);\n\t\t\tlet forkedThreadId: string | undefined;\n\t\t\ttry {\n\t\t\t\tawait store.setSessionFile?.(sessionFile);\n\t\t\t\tlet forkedSessionFile: string;\n\t\t\t\ttry {\n\t\t\t\t\tforkedSessionFile = createBranchedSession.call(store, leafEntryId);\n\t\t\t\t} catch (error) {\n\t\t\t\t\tif (\n\t\t\t\t\t\terror instanceof Error &&\n\t\t\t\t\t\terror.message === `Entry ${leafEntryId} not found`\n\t\t\t\t\t) {\n\t\t\t\t\t\tthrow new MaestroAppServerError(-32602, \"Unknown leafEntryId\");\n\t\t\t\t\t}\n\t\t\t\t\tthrow error;\n\t\t\t\t}\n\t\t\t\tconst forkedEntries = safeReadSessionEntries(forkedSessionFile);\n\t\t\t\tconst forkedHeader = forkedEntries.find(\n\t\t\t\t\t(entry) => entry.type === \"session\",\n\t\t\t\t);\n\t\t\t\tforkedThreadId =\n\t\t\t\t\tforkedHeader && \"id\" in forkedHeader ? forkedHeader.id : undefined;\n\t\t\t\tif (!forkedThreadId) {\n\t\t\t\t\tthrow new MaestroAppServerError(\n\t\t\t\t\t\t-32000,\n\t\t\t\t\t\t\"Thread fork did not produce a readable session\",\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tif (title && store.setSessionTitle) {\n\t\t\t\t\tawait store.setSessionTitle(forkedSessionFile, title);\n\t\t\t\t}\n\t\t\t} finally {\n\t\t\t\tawait restoreSessionBinding(store, previousSessionFile, previousLeafId);\n\t\t\t}\n\t\t\tawait flushSessionWrites(store);\n\t\t\treturn {\n\t\t\t\tthread: await summarizeThreadAfterMutation(store, forkedThreadId),\n\t\t\t\tparentThreadId: threadId,\n\t\t\t\tforkedFromEntryId: leafEntryId,\n\t\t\t};\n\t\t},\n\n\t\tasync archiveThread(params = {}) {\n\t\t\tconst setSessionArchived = store.setSessionArchived;\n\t\t\tif (!canArchiveThreads || !setSessionArchived) {\n\t\t\t\tthrow new MaestroAppServerError(\n\t\t\t\t\t-32601,\n\t\t\t\t\t\"Thread archive is not available\",\n\t\t\t\t);\n\t\t\t}\n\t\t\tconst threadId = requireThreadId(params);\n\t\t\tconst sessionFile = await requireExistingThreadReference(store, threadId);\n\t\t\tawait setSessionArchived.call(store, sessionFile, true);\n\t\t\tconst thread = await summarizeThreadAfterMutation(store, threadId);\n\t\t\tif (!thread.archived) {\n\t\t\t\tthrow new MaestroAppServerError(\n\t\t\t\t\t-32000,\n\t\t\t\t\t\"Thread archive update was not persisted\",\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn { thread, archived: true };\n\t\t},\n\n\t\tasync unarchiveThread(params = {}) {\n\t\t\tconst setSessionArchived = store.setSessionArchived;\n\t\t\tif (!canArchiveThreads || !setSessionArchived) {\n\t\t\t\tthrow new MaestroAppServerError(\n\t\t\t\t\t-32601,\n\t\t\t\t\t\"Thread archive is not available\",\n\t\t\t\t);\n\t\t\t}\n\t\t\tconst threadId = requireThreadId(params);\n\t\t\tconst sessionFile = await requireExistingThreadReference(store, threadId);\n\t\t\tawait setSessionArchived.call(store, sessionFile, false);\n\t\t\tconst thread = await summarizeThreadAfterMutation(store, threadId);\n\t\t\tif (thread.archived) {\n\t\t\t\tthrow new MaestroAppServerError(\n\t\t\t\t\t-32000,\n\t\t\t\t\t\"Thread archive update was not persisted\",\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn { thread, archived: false };\n\t\t},\n\n\t\tasync deleteThread(params = {}) {\n\t\t\tconst deleteSession = store.deleteSession;\n\t\t\tif (!canDeleteThreads || !deleteSession) {\n\t\t\t\tthrow new MaestroAppServerError(\n\t\t\t\t\t-32601,\n\t\t\t\t\t\"Thread delete is not available\",\n\t\t\t\t);\n\t\t\t}\n\t\t\tconst threadId = requireThreadId(params);\n\t\t\tconst sessionFile = await requireExistingThreadReference(store, threadId);\n\t\t\tif (isActiveThreadSessionFile(store, sessionFile)) {\n\t\t\t\tthrow new MaestroAppServerError(\n\t\t\t\t\t-32000,\n\t\t\t\t\t\"Cannot delete the currently active thread\",\n\t\t\t\t);\n\t\t\t}\n\t\t\tawait deleteSession.call(store, threadId);\n\t\t\tawait flushSessionWrites(store);\n\t\t\treturn { threadId, deleted: true };\n\t\t},\n\n\t\tasync listTurns(params = {}) {\n\t\t\tconst threadId = requireThreadId(params);\n\t\t\tconst limit = normalizeLimit(params.limit);\n\t\t\tconst offset = decodeCursor(params.cursor);\n\t\t\tconst projection = await loadProjectionForThread(store, threadId);\n\t\t\tconst turns = turnsFromProjection(projection);\n\t\t\tconst page = turns.slice(offset, offset + limit);\n\t\t\tconst nextOffset = offset + page.length;\n\t\t\treturn {\n\t\t\t\tthreadId,\n\t\t\t\tturns: page,\n\t\t\t\tnextCursor: nextOffset < turns.length ? encodeCursor(nextOffset) : null,\n\t\t\t\tgraph: graphFromProjection(projection),\n\t\t\t};\n\t\t},\n\t};\n}\n\nasync function loadProjectionForThread(\n\tstore: SessionStore,\n\tthreadId: string,\n): Promise<SessionGraphProjection> {\n\tif (store.loadEntries) {\n\t\tconst entries = await store.loadEntries(threadId);\n\t\tif (entries) {\n\t\t\treturn buildSessionGraphProjection(entries);\n\t\t}\n\t}\n\tconst sessionFile = store.getSessionFileById(threadId);\n\tif (!sessionFile || sessionFile.startsWith(\"db:\")) {\n\t\tthrow new MaestroAppServerError(-32004, \"Thread not found\");\n\t}\n\treturn buildSessionGraphProjection(safeReadSessionEntries(sessionFile));\n}\n\nasync function loadThreadGoal(\n\tstore: SessionStore,\n\tthreadId: string,\n): Promise<MaestroAppServerThreadGoal | null> {\n\tif (store.loadEntries) {\n\t\tconst entries = await store.loadEntries(threadId);\n\t\tif (entries) {\n\t\t\treturn latestGoalFromEntries(entries);\n\t\t}\n\t}\n\tconst sessionFile = store.getSessionFileById(threadId);\n\tif (!sessionFile) {\n\t\tthrow new MaestroAppServerError(-32004, \"Thread not found\");\n\t}\n\tif (sessionFile.startsWith(\"db:\")) {\n\t\tconst loaded = await store.loadSession(threadId, {\n\t\t\tmessagesView: \"notLoaded\",\n\t\t});\n\t\tif (!loaded) {\n\t\t\tthrow new MaestroAppServerError(-32004, \"Thread not found\");\n\t\t}\n\t\treturn null;\n\t}\n\treturn latestGoalFromEntries(safeReadSessionEntries(sessionFile));\n}\n\nfunction isSupportedMethod(\n\tmethod: string,\n): method is (typeof maestroAppServerClientMethods)[number] {\n\treturn maestroAppServerClientMethods.includes(\n\t\tmethod as (typeof maestroAppServerClientMethods)[number],\n\t);\n}\n\nexport async function handleMaestroAppServerRequest(\n\tapi: MaestroAppServerSessionApi,\n\trequest: MaestroAppServerClientRequest,\n): Promise<MaestroAppServerResponse> {\n\tconst id = request.id as JsonRpcId;\n\ttry {\n\t\tif (!isSupportedMethod(request.method)) {\n\t\t\tthrow new MaestroAppServerError(-32601, \"Method not found\");\n\t\t}\n\t\tconst method = request.method;\n\t\tconst protocolModeDecision = api.checkProtocolMode?.(method) ?? {\n\t\t\tallowed: true,\n\t\t};\n\t\tif (!protocolModeDecision.allowed) {\n\t\t\tthrow new MaestroAppServerError(\n\t\t\t\t-32003,\n\t\t\t\tprotocolModeDecision.reason ?? \"Method blocked by protocol mode\",\n\t\t\t);\n\t\t}\n\n\t\tswitch (method) {\n\t\t\tcase \"initialize\":\n\t\t\t\treturn {\n\t\t\t\t\tjsonrpc: \"2.0\",\n\t\t\t\t\tid,\n\t\t\t\t\tresult: api.initialize(),\n\t\t\t\t};\n\t\t\tcase \"protocol/mode/list\":\n\t\t\t\treturn {\n\t\t\t\t\tjsonrpc: \"2.0\",\n\t\t\t\t\tid,\n\t\t\t\t\tresult: await api.listProtocolModes(request.params),\n\t\t\t\t};\n\t\t\tcase \"protocol/mode/set\":\n\t\t\t\treturn {\n\t\t\t\t\tjsonrpc: \"2.0\",\n\t\t\t\t\tid,\n\t\t\t\t\tresult: await api.setProtocolMode(request.params),\n\t\t\t\t};\n\t\t\tcase \"model/list\":\n\t\t\t\treturn {\n\t\t\t\t\tjsonrpc: \"2.0\",\n\t\t\t\t\tid,\n\t\t\t\t\tresult: await api.listModels(request.params),\n\t\t\t\t};\n\t\t\tcase \"modelProvider/capabilities/read\":\n\t\t\t\treturn {\n\t\t\t\t\tjsonrpc: \"2.0\",\n\t\t\t\t\tid,\n\t\t\t\t\tresult: await api.readModelProviderCapabilities(request.params),\n\t\t\t\t};\n\t\t\tcase \"policy/read\":\n\t\t\t\treturn {\n\t\t\t\t\tjsonrpc: \"2.0\",\n\t\t\t\t\tid,\n\t\t\t\t\tresult: await api.readPolicy(request.params),\n\t\t\t\t};\n\t\t\tcase \"policy/check\":\n\t\t\t\treturn {\n\t\t\t\t\tjsonrpc: \"2.0\",\n\t\t\t\t\tid,\n\t\t\t\t\tresult: await api.checkPolicy(request.params),\n\t\t\t\t};\n\t\t\tcase \"requirements/list\":\n\t\t\t\treturn {\n\t\t\t\t\tjsonrpc: \"2.0\",\n\t\t\t\t\tid,\n\t\t\t\t\tresult: await api.listRequirements(request.params),\n\t\t\t\t};\n\t\t\tcase \"network/fetch\":\n\t\t\t\treturn {\n\t\t\t\t\tjsonrpc: \"2.0\",\n\t\t\t\t\tid,\n\t\t\t\t\tresult: await api.fetchNetwork(request.params),\n\t\t\t\t};\n\t\t\tcase \"network/audit/list\":\n\t\t\t\treturn {\n\t\t\t\t\tjsonrpc: \"2.0\",\n\t\t\t\t\tid,\n\t\t\t\t\tresult: await api.listNetworkAudit(request.params),\n\t\t\t\t};\n\t\t\tcase \"sandbox/probe\":\n\t\t\t\treturn {\n\t\t\t\t\tjsonrpc: \"2.0\",\n\t\t\t\t\tid,\n\t\t\t\t\tresult: await api.probeSandbox(request.params),\n\t\t\t\t};\n\t\t\tcase \"sandbox/check/run\":\n\t\t\t\treturn {\n\t\t\t\t\tjsonrpc: \"2.0\",\n\t\t\t\t\tid,\n\t\t\t\t\tresult: await api.runSandboxCheck(request.params),\n\t\t\t\t};\n\t\t\tcase \"externalAgent/import\":\n\t\t\t\treturn {\n\t\t\t\t\tjsonrpc: \"2.0\",\n\t\t\t\t\tid,\n\t\t\t\t\tresult: await api.importExternalAgent(request.params),\n\t\t\t\t};\n\t\t\tcase \"pluginBundle/list\":\n\t\t\t\treturn {\n\t\t\t\t\tjsonrpc: \"2.0\",\n\t\t\t\t\tid,\n\t\t\t\t\tresult: await api.listPluginBundles(request.params),\n\t\t\t\t};\n\t\t\tcase \"pluginBundle/install\":\n\t\t\t\treturn {\n\t\t\t\t\tjsonrpc: \"2.0\",\n\t\t\t\t\tid,\n\t\t\t\t\tresult: await api.installPluginBundle(request.params),\n\t\t\t\t};\n\t\t\tcase \"pluginBundle/remove\":\n\t\t\t\treturn {\n\t\t\t\t\tjsonrpc: \"2.0\",\n\t\t\t\t\tid,\n\t\t\t\t\tresult: await api.removePluginBundle(request.params),\n\t\t\t\t};\n\t\t\tcase \"daemon/status\":\n\t\t\t\treturn {\n\t\t\t\t\tjsonrpc: \"2.0\",\n\t\t\t\t\tid,\n\t\t\t\t\tresult: await api.readDaemonStatus(request.params),\n\t\t\t\t};\n\t\t\tcase \"remoteControl/status\":\n\t\t\t\treturn {\n\t\t\t\t\tjsonrpc: \"2.0\",\n\t\t\t\t\tid,\n\t\t\t\t\tresult: await api.readRemoteControlStatus(request.params),\n\t\t\t\t};\n\t\t\tcase \"remoteControl/lease/read\":\n\t\t\t\treturn {\n\t\t\t\t\tjsonrpc: \"2.0\",\n\t\t\t\t\tid,\n\t\t\t\t\tresult: await api.readRemoteControlLease(request.params),\n\t\t\t\t};\n\t\t\tcase \"remoteControl/lease/heartbeat\":\n\t\t\t\treturn {\n\t\t\t\t\tjsonrpc: \"2.0\",\n\t\t\t\t\tid,\n\t\t\t\t\tresult: await api.heartbeatRemoteControlLease(request.params),\n\t\t\t\t};\n\t\t\tcase \"remoteControl/drain\":\n\t\t\t\treturn {\n\t\t\t\t\tjsonrpc: \"2.0\",\n\t\t\t\t\tid,\n\t\t\t\t\tresult: await api.drainRemoteControl(request.params),\n\t\t\t\t};\n\t\t\tcase \"command/exec\":\n\t\t\t\treturn {\n\t\t\t\t\tjsonrpc: \"2.0\",\n\t\t\t\t\tid,\n\t\t\t\t\tresult: await api.execCommand(request.params),\n\t\t\t\t};\n\t\t\tcase \"command/exec/write\":\n\t\t\t\treturn {\n\t\t\t\t\tjsonrpc: \"2.0\",\n\t\t\t\t\tid,\n\t\t\t\t\tresult: await api.writeCommandStdin(request.params),\n\t\t\t\t};\n\t\t\tcase \"command/exec/terminate\":\n\t\t\t\treturn {\n\t\t\t\t\tjsonrpc: \"2.0\",\n\t\t\t\t\tid,\n\t\t\t\t\tresult: await api.terminateCommand(request.params),\n\t\t\t\t};\n\t\t\tcase \"fs/readFile\":\n\t\t\t\treturn {\n\t\t\t\t\tjsonrpc: \"2.0\",\n\t\t\t\t\tid,\n\t\t\t\t\tresult: await api.readFile(request.params),\n\t\t\t\t};\n\t\t\tcase \"fs/writeFile\":\n\t\t\t\treturn {\n\t\t\t\t\tjsonrpc: \"2.0\",\n\t\t\t\t\tid,\n\t\t\t\t\tresult: await api.writeFile(request.params),\n\t\t\t\t};\n\t\t\tcase \"fs/readDirectory\":\n\t\t\t\treturn {\n\t\t\t\t\tjsonrpc: \"2.0\",\n\t\t\t\t\tid,\n\t\t\t\t\tresult: await api.readDirectory(request.params),\n\t\t\t\t};\n\t\t\tcase \"fs/getMetadata\":\n\t\t\t\treturn {\n\t\t\t\t\tjsonrpc: \"2.0\",\n\t\t\t\t\tid,\n\t\t\t\t\tresult: await api.getMetadata(request.params),\n\t\t\t\t};\n\t\t\tcase \"fs/createDirectory\":\n\t\t\t\treturn {\n\t\t\t\t\tjsonrpc: \"2.0\",\n\t\t\t\t\tid,\n\t\t\t\t\tresult: await api.createDirectory(request.params),\n\t\t\t\t};\n\t\t\tcase \"fs/remove\":\n\t\t\t\treturn {\n\t\t\t\t\tjsonrpc: \"2.0\",\n\t\t\t\t\tid,\n\t\t\t\t\tresult: await api.remove(request.params),\n\t\t\t\t};\n\t\t\tcase \"fs/copy\":\n\t\t\t\treturn {\n\t\t\t\t\tjsonrpc: \"2.0\",\n\t\t\t\t\tid,\n\t\t\t\t\tresult: await api.copy(request.params),\n\t\t\t\t};\n\t\t\tcase \"fs/watch\":\n\t\t\t\treturn {\n\t\t\t\t\tjsonrpc: \"2.0\",\n\t\t\t\t\tid,\n\t\t\t\t\tresult: await api.watch(request.params),\n\t\t\t\t};\n\t\t\tcase \"fs/unwatch\":\n\t\t\t\treturn {\n\t\t\t\t\tjsonrpc: \"2.0\",\n\t\t\t\t\tid,\n\t\t\t\t\tresult: await api.unwatch(request.params),\n\t\t\t\t};\n\t\t\tcase \"thread/list\":\n\t\t\t\treturn {\n\t\t\t\t\tjsonrpc: \"2.0\",\n\t\t\t\t\tid,\n\t\t\t\t\tresult: await api.listThreads(request.params),\n\t\t\t\t};\n\t\t\tcase \"thread/read\":\n\t\t\t\treturn {\n\t\t\t\t\tjsonrpc: \"2.0\",\n\t\t\t\t\tid,\n\t\t\t\t\tresult: {\n\t\t\t\t\t\tthread: await api.readThread(request.params),\n\t\t\t\t\t},\n\t\t\t\t};\n\t\t\tcase \"thread/metadata/update\":\n\t\t\t\treturn {\n\t\t\t\t\tjsonrpc: \"2.0\",\n\t\t\t\t\tid,\n\t\t\t\t\tresult: await api.updateThreadMetadata(request.params),\n\t\t\t\t};\n\t\t\tcase \"thread/name/set\":\n\t\t\t\treturn {\n\t\t\t\t\tjsonrpc: \"2.0\",\n\t\t\t\t\tid,\n\t\t\t\t\tresult: await api.setThreadName(request.params),\n\t\t\t\t};\n\t\t\tcase \"thread/goal/get\":\n\t\t\t\treturn {\n\t\t\t\t\tjsonrpc: \"2.0\",\n\t\t\t\t\tid,\n\t\t\t\t\tresult: await api.getThreadGoal(request.params),\n\t\t\t\t};\n\t\t\tcase \"thread/goal/set\":\n\t\t\t\treturn {\n\t\t\t\t\tjsonrpc: \"2.0\",\n\t\t\t\t\tid,\n\t\t\t\t\tresult: await api.setThreadGoal(request.params),\n\t\t\t\t};\n\t\t\tcase \"thread/goal/clear\":\n\t\t\t\treturn {\n\t\t\t\t\tjsonrpc: \"2.0\",\n\t\t\t\t\tid,\n\t\t\t\t\tresult: await api.clearThreadGoal(request.params),\n\t\t\t\t};\n\t\t\tcase \"thread/start\":\n\t\t\t\treturn {\n\t\t\t\t\tjsonrpc: \"2.0\",\n\t\t\t\t\tid,\n\t\t\t\t\tresult: await api.startThread(request.params),\n\t\t\t\t};\n\t\t\tcase \"thread/fork\":\n\t\t\t\treturn {\n\t\t\t\t\tjsonrpc: \"2.0\",\n\t\t\t\t\tid,\n\t\t\t\t\tresult: await api.forkThread(request.params),\n\t\t\t\t};\n\t\t\tcase \"thread/archive\":\n\t\t\t\treturn {\n\t\t\t\t\tjsonrpc: \"2.0\",\n\t\t\t\t\tid,\n\t\t\t\t\tresult: await api.archiveThread(request.params),\n\t\t\t\t};\n\t\t\tcase \"thread/unarchive\":\n\t\t\t\treturn {\n\t\t\t\t\tjsonrpc: \"2.0\",\n\t\t\t\t\tid,\n\t\t\t\t\tresult: await api.unarchiveThread(request.params),\n\t\t\t\t};\n\t\t\tcase \"thread/delete\":\n\t\t\t\treturn {\n\t\t\t\t\tjsonrpc: \"2.0\",\n\t\t\t\t\tid,\n\t\t\t\t\tresult: await api.deleteThread(request.params),\n\t\t\t\t};\n\t\t\tcase \"thread/turns/list\":\n\t\t\t\treturn {\n\t\t\t\t\tjsonrpc: \"2.0\",\n\t\t\t\t\tid,\n\t\t\t\t\tresult: await api.listTurns(request.params),\n\t\t\t\t};\n\t\t\tdefault:\n\t\t\t\tthrow new MaestroAppServerError(-32601, \"Method not found\");\n\t\t}\n\t} catch (error) {\n\t\tif (\n\t\t\terror instanceof MaestroAppServerError ||\n\t\t\terror instanceof MaestroAppServerHostControlError ||\n\t\t\terror instanceof MaestroAppServerNetworkGovernanceError ||\n\t\t\terror instanceof MaestroAppServerPolicyControlError ||\n\t\t\terror instanceof MaestroAppServerSandboxCheckError ||\n\t\t\terror instanceof MaestroAppServerExternalAgentImportError ||\n\t\t\terror instanceof MaestroAppServerPluginBundleError ||\n\t\t\terror instanceof MaestroAppServerDaemonLifecycleError ||\n\t\t\terror instanceof MaestroAppServerProtocolModesError\n\t\t) {\n\t\t\treturn {\n\t\t\t\tjsonrpc: \"2.0\",\n\t\t\t\tid,\n\t\t\t\terror: {\n\t\t\t\t\tcode: error.code,\n\t\t\t\t\tmessage: error.message,\n\t\t\t\t},\n\t\t\t};\n\t\t}\n\t\treturn {\n\t\t\tjsonrpc: \"2.0\",\n\t\t\tid,\n\t\t\terror: {\n\t\t\t\tcode: -32603,\n\t\t\t\tmessage: error instanceof Error ? error.message : \"Internal error\",\n\t\t\t},\n\t\t};\n\t}\n}\n"]}
|
package/dist/audit/logger.d.ts
CHANGED
|
@@ -129,7 +129,7 @@ export declare function queryAuditLogs(filters: {
|
|
|
129
129
|
id: string;
|
|
130
130
|
metadata: AuditMetadata | null;
|
|
131
131
|
action: string;
|
|
132
|
-
status: "error" | "
|
|
132
|
+
status: "error" | "success" | "denied" | "failure";
|
|
133
133
|
createdAt: Date;
|
|
134
134
|
traceId: string | null;
|
|
135
135
|
requestId: string | null;
|
package/dist/cli/args.js
CHANGED
|
@@ -313,7 +313,7 @@ export function parseArgs(args) {
|
|
|
313
313
|
}
|
|
314
314
|
else if (result.command === "codex" &&
|
|
315
315
|
result.subcommand === "login" &&
|
|
316
|
-
(arg === "--device" || arg === "--device-code")) {
|
|
316
|
+
(arg === "--device" || arg === "--device-code" || arg === "--device-auth")) {
|
|
317
317
|
if (!result.commandArgs) {
|
|
318
318
|
result.commandArgs = [];
|
|
319
319
|
}
|