@bjoernrochel/sevro 1.1.0 → 1.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -103,14 +103,16 @@ function claudeToolAllowRules(policy, runtime, workspace) {
103
103
  "Read",
104
104
  "Skill",
105
105
  "Agent",
106
+ "SendMessage",
106
107
  workspace ? absoluteRule(workspace, "Edit") : "Edit",
107
108
  ];
108
109
  if (!runtime)
109
- return ["Bash", "Edit", "Skill", "Agent"];
110
+ return ["Bash", "Edit", "Skill", "Agent", "SendMessage"];
110
111
  return [
111
112
  "Bash",
112
113
  "Skill",
113
114
  "Agent",
115
+ "SendMessage",
114
116
  absoluteRule(runtime.workspace, "Edit"),
115
117
  absoluteRule(runtime.root, "Edit"),
116
118
  ...(runtime.cacheRoots ?? []).map((root) => absoluteRule(root, "Edit")),
@@ -1 +1 @@
1
- {"version":3,"file":"claude-settings.js","sourceRoot":"","sources":["claude-settings.ts"],"names":[],"mappings":"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","sourcesContent":["import { isAbsolute } from \"node:path\";\nimport { CLAUDE_AUTH_VARIABLES } from \"./claude-credential\";\nimport type { RuntimePolicy } from \"../runtime/config\";\nimport { runtimeHooksEnabled } from \"../runtime/hooks\";\nimport { requireRuntimeReadRoots, isRuntimeHomeRoot } from \"../runtime/paths\";\nimport { nativeStatePath } from \"../native-transcript-state\";\nimport {\n workspaceStatePath,\n workspaceBoundaryException,\n} from \"../fixtures/workspace-state\";\n\ninterface WritableRuntime {\n root: string;\n workspace: string;\n cacheRoots?: string[];\n}\n\nfunction absoluteRule(root: string, tool: \"Read\" | \"Edit\"): string {\n if (!isAbsolute(root) || /[\\r\\n()]/.test(root))\n throw new Error(\"Claude protected path is invalid\");\n return `${tool}(/${root}/**)`;\n}\n\nfunction validPrivatePaths(\n privateRoot: string,\n credentialFile: string,\n roots: string[],\n): boolean {\n return !(\n !isAbsolute(privateRoot) ||\n !isAbsolute(credentialFile) ||\n !credentialFile.startsWith(`${privateRoot}/`) ||\n roots.some((root) => !isAbsolute(root) || /[\\r\\n()]/.test(root))\n );\n}\n\n/** Keep agent tools away from the CLI's private state while core auth works. */\nexport function claudeHostSettings(\n privateRoot: string,\n credentialFile: string,\n pluginRoots: string[] = [],\n protectedRoots: string[] = [],\n runtimePolicy?: RuntimePolicy,\n transcriptReadRoots: string[] = [],\n runtime?: WritableRuntime,\n workspace?: string,\n): Record<string, unknown> {\n if (\n !validPrivatePaths(privateRoot, credentialFile, [\n ...pluginRoots,\n ...protectedRoots,\n ])\n )\n throw new Error(\"Claude private state paths are invalid\");\n const readRoots = runtimeReadRoots(runtimePolicy);\n requireRuntimeReadRoots(readRoots, [privateRoot, ...protectedRoots]);\n requireRuntimeReadRoots(runtimeCacheRoots(runtime), [\n privateRoot,\n ...protectedRoots,\n ]);\n return {\n disableAllHooks: !runtimeHooksEnabled(runtimePolicy),\n sandbox: {\n enabled: true,\n allowUnsandboxedCommands: false,\n failIfUnavailable: true,\n filesystem: claudeFilesystemPolicy(\n privateRoot,\n protectedRoots,\n readRoots,\n transcriptReadRoots,\n pluginRoots,\n runtime,\n workspace,\n ),\n credentials: {\n files: [{ path: credentialFile, mode: \"deny\" }],\n envVars: CLAUDE_AUTH_VARIABLES.map((name) => ({ name, mode: \"deny\" })),\n },\n },\n permissions: claudePermissions(\n privateRoot,\n protectedRoots,\n pluginRoots,\n runtimePolicy,\n transcriptReadRoots,\n runtime,\n workspace,\n ),\n };\n}\n\nfunction claudeFilesystemPolicy(\n privateRoot: string,\n protectedRoots: string[],\n readRoots: string[],\n transcriptReadRoots: string[],\n pluginRoots: string[],\n runtime: WritableRuntime | undefined,\n workspace: string | undefined,\n) {\n const runtimeWriteRoot = runtime?.root;\n const writableRoots = runtimeWriteRoots(runtime);\n return {\n denyRead: [privateRoot, ...protectedRoots],\n allowRead: [\n ...workspaceBoundaryException(workspaceStatePath(), workspace),\n ...readRoots,\n ...transcriptReadRoots,\n ...pluginRoots,\n ...writableRoots,\n ],\n ...(writableRoots.length ? { allowWrite: writableRoots } : {}),\n denyWrite: [\n privateRoot,\n ...pluginRoots,\n ...writableProtectedRoots(\n protectedRoots,\n runtimeWriteRoot,\n workspace,\n runtimeCacheRoots(runtime),\n ),\n ...readRoots,\n ...transcriptReadRoots,\n ],\n };\n}\n\nfunction claudePermissions(\n privateRoot: string,\n protectedRoots: string[],\n pluginRoots: string[],\n policy: RuntimePolicy | undefined,\n transcriptReadRoots: string[],\n runtime: WritableRuntime | undefined,\n workspace: string | undefined,\n) {\n const runtimeWriteRoot = runtime?.root;\n const roots = [\n privateRoot,\n ...protectedRoots.filter(\n (root) => !workspaceBoundaryException(root, workspace).length,\n ),\n ];\n const managedWorkspace = workspaceBoundaryException(\n workspaceStatePath(),\n workspace,\n )[0];\n const readRoots = policy\n ? roots.filter((root) => !isRuntimeHomeRoot(root))\n : roots;\n const toolRoots = [...runtimeReadRoots(policy), ...transcriptReadRoots];\n const writableRoots = runtimeWriteRoots(runtime);\n return {\n allow: claudeToolAllowRules(policy, runtime, managedWorkspace),\n ...(policy || managedWorkspace\n ? {\n blockReadsOutsideWorkingDirectories: true,\n additionalDirectories: [\n ...pluginRoots,\n ...toolRoots,\n ...writableRoots,\n ],\n }\n : {}),\n deny: [\n ...writableProtectedRoots(\n roots,\n runtimeWriteRoot,\n workspace,\n runtimeCacheRoots(runtime),\n ).flatMap((root) =>\n protectedToolRules(\n root,\n readRoots.includes(root) &&\n ![...transcriptReadRoots, ...pluginRoots].some((path) =>\n path.startsWith(`${root}/`),\n ),\n ),\n ),\n ...[...pluginRoots, ...toolRoots].map((root) =>\n absoluteRule(root, \"Edit\"),\n ),\n ],\n };\n}\n\nfunction claudeToolAllowRules(\n policy: RuntimePolicy | undefined,\n runtime: WritableRuntime | undefined,\n workspace?: string,\n): string[] {\n if (!policy)\n return [\n \"Bash\",\n \"Read\",\n \"Skill\",\n \"Agent\",\n workspace ? absoluteRule(workspace, \"Edit\") : \"Edit\",\n ];\n if (!runtime) return [\"Bash\", \"Edit\", \"Skill\", \"Agent\"];\n return [\n \"Bash\",\n \"Skill\",\n \"Agent\",\n absoluteRule(runtime.workspace, \"Edit\"),\n absoluteRule(runtime.root, \"Edit\"),\n ...(runtime.cacheRoots ?? []).map((root) => absoluteRule(root, \"Edit\")),\n ];\n}\n\n/** Native write denies override grants; the namespace stays read-denied and has no write grant. */\nfunction writableProtectedRoots(\n roots: string[],\n runtimeWriteRoot: string | undefined,\n workspace?: string,\n cacheRoots: string[] = [],\n): string[] {\n const namespace = nativeStatePath();\n return roots.filter(\n (root) =>\n !workspaceBoundaryException(root, workspace).length &&\n !sharedHomeGrant(root, cacheRoots) &&\n keepNativeWriteDeny(root, namespace, runtimeWriteRoot),\n );\n}\n\nfunction sharedHomeGrant(root: string, cacheRoots: string[]): boolean {\n return (\n isRuntimeHomeRoot(root) &&\n cacheRoots.some((cache) => cache.startsWith(`${root}/`))\n );\n}\n\nfunction runtimeCacheRoots(runtime: WritableRuntime | undefined): string[] {\n return runtime?.cacheRoots ?? [];\n}\n\nfunction runtimeWriteRoots(runtime: WritableRuntime | undefined): string[] {\n return [\n ...optionalRuntimeRoot(runtime?.root),\n ...(runtime?.cacheRoots ?? []),\n ];\n}\n\nfunction keepNativeWriteDeny(\n root: string,\n namespace: string,\n runtimeWriteRoot?: string,\n): boolean {\n return (\n root !== namespace ||\n runtimeWriteRoot === undefined ||\n !runtimeWriteRoot.startsWith(`${namespace}/`)\n );\n}\n\nfunction optionalRuntimeRoot(root: string | undefined): string[] {\n return root ? [root] : [];\n}\n\nfunction protectedToolRules(root: string, denyRead: boolean): string[] {\n return [\n ...(denyRead ? [absoluteRule(root, \"Read\")] : []),\n absoluteRule(root, \"Edit\"),\n ];\n}\n\nfunction runtimeReadRoots(policy: RuntimePolicy | undefined): string[] {\n return policy?.readOnlyRoots ?? [];\n}\n"]}
1
+ {"version":3,"file":"claude-settings.js","sourceRoot":"","sources":["claude-settings.ts"],"names":[],"mappings":"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","sourcesContent":["import { isAbsolute } from \"node:path\";\nimport { CLAUDE_AUTH_VARIABLES } from \"./claude-credential\";\nimport type { RuntimePolicy } from \"../runtime/config\";\nimport { runtimeHooksEnabled } from \"../runtime/hooks\";\nimport { requireRuntimeReadRoots, isRuntimeHomeRoot } from \"../runtime/paths\";\nimport { nativeStatePath } from \"../native-transcript-state\";\nimport {\n workspaceStatePath,\n workspaceBoundaryException,\n} from \"../fixtures/workspace-state\";\n\ninterface WritableRuntime {\n root: string;\n workspace: string;\n cacheRoots?: string[];\n}\n\nfunction absoluteRule(root: string, tool: \"Read\" | \"Edit\"): string {\n if (!isAbsolute(root) || /[\\r\\n()]/.test(root))\n throw new Error(\"Claude protected path is invalid\");\n return `${tool}(/${root}/**)`;\n}\n\nfunction validPrivatePaths(\n privateRoot: string,\n credentialFile: string,\n roots: string[],\n): boolean {\n return !(\n !isAbsolute(privateRoot) ||\n !isAbsolute(credentialFile) ||\n !credentialFile.startsWith(`${privateRoot}/`) ||\n roots.some((root) => !isAbsolute(root) || /[\\r\\n()]/.test(root))\n );\n}\n\n/** Keep agent tools away from the CLI's private state while core auth works. */\nexport function claudeHostSettings(\n privateRoot: string,\n credentialFile: string,\n pluginRoots: string[] = [],\n protectedRoots: string[] = [],\n runtimePolicy?: RuntimePolicy,\n transcriptReadRoots: string[] = [],\n runtime?: WritableRuntime,\n workspace?: string,\n): Record<string, unknown> {\n if (\n !validPrivatePaths(privateRoot, credentialFile, [\n ...pluginRoots,\n ...protectedRoots,\n ])\n )\n throw new Error(\"Claude private state paths are invalid\");\n const readRoots = runtimeReadRoots(runtimePolicy);\n requireRuntimeReadRoots(readRoots, [privateRoot, ...protectedRoots]);\n requireRuntimeReadRoots(runtimeCacheRoots(runtime), [\n privateRoot,\n ...protectedRoots,\n ]);\n return {\n disableAllHooks: !runtimeHooksEnabled(runtimePolicy),\n sandbox: {\n enabled: true,\n allowUnsandboxedCommands: false,\n failIfUnavailable: true,\n filesystem: claudeFilesystemPolicy(\n privateRoot,\n protectedRoots,\n readRoots,\n transcriptReadRoots,\n pluginRoots,\n runtime,\n workspace,\n ),\n credentials: {\n files: [{ path: credentialFile, mode: \"deny\" }],\n envVars: CLAUDE_AUTH_VARIABLES.map((name) => ({ name, mode: \"deny\" })),\n },\n },\n permissions: claudePermissions(\n privateRoot,\n protectedRoots,\n pluginRoots,\n runtimePolicy,\n transcriptReadRoots,\n runtime,\n workspace,\n ),\n };\n}\n\nfunction claudeFilesystemPolicy(\n privateRoot: string,\n protectedRoots: string[],\n readRoots: string[],\n transcriptReadRoots: string[],\n pluginRoots: string[],\n runtime: WritableRuntime | undefined,\n workspace: string | undefined,\n) {\n const runtimeWriteRoot = runtime?.root;\n const writableRoots = runtimeWriteRoots(runtime);\n return {\n denyRead: [privateRoot, ...protectedRoots],\n allowRead: [\n ...workspaceBoundaryException(workspaceStatePath(), workspace),\n ...readRoots,\n ...transcriptReadRoots,\n ...pluginRoots,\n ...writableRoots,\n ],\n ...(writableRoots.length ? { allowWrite: writableRoots } : {}),\n denyWrite: [\n privateRoot,\n ...pluginRoots,\n ...writableProtectedRoots(\n protectedRoots,\n runtimeWriteRoot,\n workspace,\n runtimeCacheRoots(runtime),\n ),\n ...readRoots,\n ...transcriptReadRoots,\n ],\n };\n}\n\nfunction claudePermissions(\n privateRoot: string,\n protectedRoots: string[],\n pluginRoots: string[],\n policy: RuntimePolicy | undefined,\n transcriptReadRoots: string[],\n runtime: WritableRuntime | undefined,\n workspace: string | undefined,\n) {\n const runtimeWriteRoot = runtime?.root;\n const roots = [\n privateRoot,\n ...protectedRoots.filter(\n (root) => !workspaceBoundaryException(root, workspace).length,\n ),\n ];\n const managedWorkspace = workspaceBoundaryException(\n workspaceStatePath(),\n workspace,\n )[0];\n const readRoots = policy\n ? roots.filter((root) => !isRuntimeHomeRoot(root))\n : roots;\n const toolRoots = [...runtimeReadRoots(policy), ...transcriptReadRoots];\n const writableRoots = runtimeWriteRoots(runtime);\n return {\n allow: claudeToolAllowRules(policy, runtime, managedWorkspace),\n ...(policy || managedWorkspace\n ? {\n blockReadsOutsideWorkingDirectories: true,\n additionalDirectories: [\n ...pluginRoots,\n ...toolRoots,\n ...writableRoots,\n ],\n }\n : {}),\n deny: [\n ...writableProtectedRoots(\n roots,\n runtimeWriteRoot,\n workspace,\n runtimeCacheRoots(runtime),\n ).flatMap((root) =>\n protectedToolRules(\n root,\n readRoots.includes(root) &&\n ![...transcriptReadRoots, ...pluginRoots].some((path) =>\n path.startsWith(`${root}/`),\n ),\n ),\n ),\n ...[...pluginRoots, ...toolRoots].map((root) =>\n absoluteRule(root, \"Edit\"),\n ),\n ],\n };\n}\n\nfunction claudeToolAllowRules(\n policy: RuntimePolicy | undefined,\n runtime: WritableRuntime | undefined,\n workspace?: string,\n): string[] {\n if (!policy)\n return [\n \"Bash\",\n \"Read\",\n \"Skill\",\n \"Agent\",\n \"SendMessage\",\n workspace ? absoluteRule(workspace, \"Edit\") : \"Edit\",\n ];\n if (!runtime) return [\"Bash\", \"Edit\", \"Skill\", \"Agent\", \"SendMessage\"];\n return [\n \"Bash\",\n \"Skill\",\n \"Agent\",\n \"SendMessage\",\n absoluteRule(runtime.workspace, \"Edit\"),\n absoluteRule(runtime.root, \"Edit\"),\n ...(runtime.cacheRoots ?? []).map((root) => absoluteRule(root, \"Edit\")),\n ];\n}\n\n/** Native write denies override grants; the namespace stays read-denied and has no write grant. */\nfunction writableProtectedRoots(\n roots: string[],\n runtimeWriteRoot: string | undefined,\n workspace?: string,\n cacheRoots: string[] = [],\n): string[] {\n const namespace = nativeStatePath();\n return roots.filter(\n (root) =>\n !workspaceBoundaryException(root, workspace).length &&\n !sharedHomeGrant(root, cacheRoots) &&\n keepNativeWriteDeny(root, namespace, runtimeWriteRoot),\n );\n}\n\nfunction sharedHomeGrant(root: string, cacheRoots: string[]): boolean {\n return (\n isRuntimeHomeRoot(root) &&\n cacheRoots.some((cache) => cache.startsWith(`${root}/`))\n );\n}\n\nfunction runtimeCacheRoots(runtime: WritableRuntime | undefined): string[] {\n return runtime?.cacheRoots ?? [];\n}\n\nfunction runtimeWriteRoots(runtime: WritableRuntime | undefined): string[] {\n return [\n ...optionalRuntimeRoot(runtime?.root),\n ...(runtime?.cacheRoots ?? []),\n ];\n}\n\nfunction keepNativeWriteDeny(\n root: string,\n namespace: string,\n runtimeWriteRoot?: string,\n): boolean {\n return (\n root !== namespace ||\n runtimeWriteRoot === undefined ||\n !runtimeWriteRoot.startsWith(`${namespace}/`)\n );\n}\n\nfunction optionalRuntimeRoot(root: string | undefined): string[] {\n return root ? [root] : [];\n}\n\nfunction protectedToolRules(root: string, denyRead: boolean): string[] {\n return [\n ...(denyRead ? [absoluteRule(root, \"Read\")] : []),\n absoluteRule(root, \"Edit\"),\n ];\n}\n\nfunction runtimeReadRoots(policy: RuntimePolicy | undefined): string[] {\n return policy?.readOnlyRoots ?? [];\n}\n"]}
@@ -276,7 +276,7 @@ function claudeTurnArgs(options, prompt, session, settingsPath, pluginDirs) {
276
276
  "--permission-mode",
277
277
  "dontAsk",
278
278
  "--tools",
279
- "Bash,Read,Edit,Skill,Agent",
279
+ "Bash,Read,Edit,Skill,Agent,SendMessage",
280
280
  "--setting-sources",
281
281
  options.projectSettings ? "project" : "",
282
282
  "--settings",
@@ -1 +1 @@
1
- {"version":3,"file":"claude.js","sourceRoot":"","sources":["claude.ts"],"names":[],"mappings":"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","sourcesContent":["import { existsSync } from \"node:fs\";\nimport { readFile, realpath, rm, stat } from \"node:fs/promises\";\nimport { dirname, isAbsolute, join } from \"node:path\";\nimport type { HostAdapter, HostResult } from \"../engine\";\nimport { allocateNativeState } from \"../native-transcript-state\";\nimport {\n failedNativeTranscripts,\n retainEnabledNativeTranscripts,\n} from \"../native-transcripts\";\nimport { fixtureParts } from \"../fixtures/preparation\";\nimport {\n prepareHookMounts,\n releaseRuntimeHooks,\n runtimeHookObservation,\n runtimeHooksEnabled,\n type HookMounts,\n} from \"../runtime/hooks\";\nimport { insideRuntimeRoot as inside } from \"../runtime/paths\";\nimport { runtimeObservations } from \"../runtime/state\";\nimport { isRecord } from \"../value-guards\";\nimport { runClaudeTurns, type ClaudeSession } from \"./claude-continuation\";\nimport { validateNativeHostRequest, validHostTimeout } from \"./native-request\";\nimport { summarizeClaudeEvents } from \"./claude-events\";\nimport { observeClaudeNativeGoal } from \"./claude-native-goal\";\nimport { runClaudeProcess } from \"./claude-process\";\nimport {\n claudeRepositoryInvocationObservation,\n verifyClaudeRepositoryInvocation,\n} from \"./claude-repository-invocation\";\nimport { prepareClaudeState, type ClaudeHostOptions } from \"./claude-state\";\nimport {\n cleanupNativeState,\n createHostDiagnostics,\n diagnoseHostRequest,\n diagnosticConfiguration,\n type HostDiagnostics,\n} from \"../host-diagnostics\";\nimport {\n CLAUDE_AUTH_VARIABLES,\n CLAUDE_LOGIN_MARGIN_MS,\n} from \"./claude-credential\";\nimport { claudeToolCallsObservation } from \"./claude-tool-calls\";\nimport { claudeSkillActivationsObservation } from \"./claude-skill-activations\";\nimport { claudeNativeControls } from \"./native-controls\";\nexport type { ClaudeHostOptions } from \"./claude-state\";\n\nconst DEFAULT_TIMEOUT_MS = 10 * 60_000;\n\ntype Request = Parameters<HostAdapter[\"run\"]>[0];\ntype PluginDeclaration = NonNullable<Request[\"claudePluginDirs\"]>;\ntype PluginInvocation = NonNullable<Request[\"explicitSkillInvocation\"]> & {\n scope?: \"plugin\";\n};\ntype RepositoryInvocation = Awaited<\n ReturnType<typeof verifyClaudeRepositoryInvocation>\n>;\ntype Execution = Awaited<ReturnType<typeof runClaudeTurns>>;\n\nasync function pluginDirectories(\n workspace: string,\n declaration: PluginDeclaration,\n): Promise<string[]> {\n const root = await realpath(workspace);\n requireUniquePluginDeclaration(declaration);\n const paths = new Set(declaration.artifactPaths);\n const directories: string[] = [];\n for (const relativeRoot of declaration.artifactRoots)\n directories.push(await declaredPluginDirectory(root, relativeRoot, paths));\n requireDisjointPluginDirectories(directories);\n for (const artifactPath of paths)\n await verifyPluginArtifact(root, artifactPath, declaration, directories);\n return directories;\n}\n\nfunction requireUniquePluginDeclaration(declaration: PluginDeclaration): void {\n if (\n new Set(declaration.artifactRoots).size !==\n declaration.artifactRoots.length ||\n new Set(declaration.artifactPaths).size !== declaration.artifactPaths.length\n )\n throw new Error(\"Claude plugin declaration contains duplicates\");\n}\n\nasync function declaredPluginDirectory(\n root: string,\n relativeRoot: string,\n paths: Set<string>,\n): Promise<string> {\n fixtureParts(relativeRoot);\n if (!paths.has(`${relativeRoot}/.claude-plugin/plugin.json`))\n throw new Error(\"Claude plugin manifest is undeclared\");\n const actual = await realpath(join(root, relativeRoot));\n if (!inside(root, actual))\n throw new Error(\"Claude plugin directory escapes workspace\");\n if (!(await stat(join(actual, \".claude-plugin\", \"plugin.json\"))).isFile())\n throw new Error(\"Claude plugin manifest is missing\");\n return actual;\n}\n\nfunction requireDisjointPluginDirectories(directories: string[]): void {\n if (new Set(directories).size !== directories.length)\n throw new Error(\"Claude plugin directories overlap\");\n if (\n directories.some((item) =>\n directories.some((other) => item !== other && inside(other, item)),\n )\n )\n throw new Error(\"Claude plugin directories overlap\");\n}\n\nasync function verifyPluginArtifact(\n root: string,\n artifactPath: string,\n declaration: PluginDeclaration,\n directories: string[],\n): Promise<void> {\n fixtureParts(artifactPath);\n const index = declaration.artifactRoots.findIndex((item) =>\n artifactPath.startsWith(`${item}/`),\n );\n const directory = directories.at(index);\n if (index < 0 || directory === undefined)\n throw new Error(\"Claude plugin artifact is outside a declared directory\");\n if (!inside(directory, await realpath(join(root, artifactPath))))\n throw new Error(\"Claude plugin artifact escapes workspace\");\n}\n\nfunction pluginSelection(request: Request): PluginInvocation | null {\n const selected = request.explicitSkillInvocation;\n if (!selected || selected.scope === \"repository\") return null;\n return selected;\n}\n\nfunction requirePluginInvocation(\n selected: PluginInvocation,\n prompt: string,\n): void {\n const { token, pluginName, skillName } = selected;\n if (\n token !== `/${pluginName}:${skillName}` ||\n prompt.split(token).length - 1 !== 1 ||\n !/^[a-z][a-z0-9-]*$/.test(pluginName) ||\n !/^[A-Za-z0-9._-]+$/.test(skillName)\n )\n throw new Error(\"invalid Claude explicit skill invocation\");\n}\n\nfunction skillPathDeclared(\n request: Request,\n index: number,\n skillName: string,\n): boolean {\n const relativeRoot = request.claudePluginDirs?.artifactRoots[index];\n return !!request.claudePluginDirs?.artifactPaths.includes(\n `${relativeRoot}/skills/${skillName}/SKILL.md`,\n );\n}\n\nasync function verifyInvocation(\n request: Request,\n directories: string[],\n): Promise<void> {\n const selected = pluginSelection(request);\n if (!selected) return;\n requirePluginInvocation(selected, request.prompt);\n for (const [index, root] of directories.entries()) {\n if (!skillPathDeclared(request, index, selected.skillName)) continue;\n if (await mountedPluginSkill(root, selected)) return;\n }\n throw new Error(\"invoked Claude skill is absent from the package\");\n}\n\nasync function mountedPluginSkill(\n root: string,\n selected: PluginInvocation,\n): Promise<boolean> {\n let manifest: unknown;\n try {\n manifest = JSON.parse(\n await readFile(join(root, \".claude-plugin\", \"plugin.json\"), \"utf8\"),\n );\n } catch (error) {\n throw new Error(\"invalid Claude plugin manifest\", { cause: error });\n }\n if (!isRecord(manifest) || manifest.name !== selected.pluginName)\n return false;\n const skill = await stat(\n join(root, \"skills\", selected.skillName, \"SKILL.md\"),\n ).catch(() => null);\n return !!skill?.isFile();\n}\n\nfunction validClaudeOptions(\n options: ClaudeHostOptions,\n timeoutMs: number,\n): boolean {\n return (\n availableClaudeSandbox() &&\n requiredClaudePaths(options) &&\n optionalClaudePaths(options) &&\n !!options.model &&\n validClaudeEffortTimeout(options.effort, timeoutMs)\n );\n}\nfunction availableClaudeSandbox(): boolean {\n if (process.platform === \"darwin\") return existsSync(\"/usr/bin/sandbox-exec\");\n return (\n process.platform === \"linux\" &&\n existsSync(\"/usr/bin/bwrap\") &&\n existsSync(\"/usr/bin/socat\")\n );\n}\nfunction requiredClaudePaths(options: ClaudeHostOptions): boolean {\n return [\n options.binary,\n options.projectRoot,\n options.resultsRoot,\n ...options.additionalProtectedRoots,\n ].every(isAbsolute);\n}\nfunction optionalClaudePaths(options: ClaudeHostOptions): boolean {\n return [\n options.credentialFile,\n options.uvCacheDir,\n options.toolchainBinDir,\n ].every((path) => path === undefined || isAbsolute(path));\n}\nfunction validClaudeEffortTimeout(effort: string, timeoutMs: number): boolean {\n return !!effort && validHostTimeout(timeoutMs);\n}\n\n/** Run Claude with explicit plugins and its native tool sandbox. */\nexport function createClaudeHost(options: ClaudeHostOptions): HostAdapter {\n const timeoutMs = options.timeoutMs ?? DEFAULT_TIMEOUT_MS;\n if (!validClaudeOptions(options, timeoutMs))\n throw new Error(\"invalid Claude host configuration\");\n return {\n id: \"sevro.host.claude\",\n model: options.model,\n effort: options.effort,\n ...(options.retainHostDiagnostics\n ? {\n configuration: diagnosticConfiguration(options.retainHostDiagnostics),\n }\n : {}),\n hostCapabilities: [\n \"sevro.host.native-goal\",\n \"sevro.host.runtime\",\n \"sevro.host.native-transcripts\",\n \"sevro.host.hooks\",\n \"sevro.host.skill-activations\",\n \"sevro.claude.plugin-dirs\",\n \"sevro.claude.explicit-invocation\",\n ...(options.projectSettings\n ? [\"sevro.claude.repository-invocation\"]\n : []),\n \"sevro.claude.tool-calls\",\n \"sevro.host.native-controls\",\n \"sevro.host.continuation\",\n \"sevro.claude.continuation\",\n ],\n run(request) {\n return runClaudeRequest(options, timeoutMs, request);\n },\n };\n}\n\nasync function repositoryMount(\n request: Request,\n options: ClaudeHostOptions,\n): Promise<RepositoryInvocation | null> {\n if (request.explicitSkillInvocation?.scope !== \"repository\") return null;\n if (!options.projectSettings)\n throw new Error(\n \"Claude repository invocation requires project setting sources\",\n );\n return verifyClaudeRepositoryInvocation(request);\n}\n\nasync function runClaudeRequest(\n options: ClaudeHostOptions,\n timeoutMs: number,\n request: Request,\n): Promise<HostResult> {\n const diagnostics = createHostDiagnostics(\n \"claude\",\n options.retainHostDiagnostics,\n request,\n );\n return diagnoseHostRequest(diagnostics, async () => {\n diagnostics.stage = \"request-validation\";\n await diagnostics.readCredentials(options.credentialFile);\n return executeClaudeRequest(options, timeoutMs, request, diagnostics);\n });\n}\n\n/** Every turn shares one access token, so it must outlive all of them. */\nfunction claudeLoginLifetime(timeoutMs: number, request: Request): number {\n const turns = request.followUpPrompt === undefined ? 1 : 2;\n return timeoutMs * turns + CLAUDE_LOGIN_MARGIN_MS;\n}\n\nasync function executeClaudeRequest(\n options: ClaudeHostOptions,\n timeoutMs: number,\n request: Request,\n diagnostics: HostDiagnostics,\n): Promise<HostResult> {\n const { pluginDirs, repositoryInvocation } = await validateClaudeRequest(\n options,\n request,\n );\n diagnostics.stage = \"state-allocation\";\n const stateRoot = await allocateNativeState(\n \"claude-\",\n request.runtimePolicy ? request.workspace : undefined,\n );\n let hooks: HookMounts | undefined;\n try {\n diagnostics.stage = \"state-preparation\";\n const state = await prepareClaudeState(\n stateRoot,\n options,\n request,\n pluginDirs,\n claudeLoginLifetime(timeoutMs, request),\n );\n diagnostics.registerCredentials(state.env, CLAUDE_AUTH_VARIABLES);\n hooks = state.hooks;\n const run = claudeProcessRunner(\n options,\n timeoutMs,\n request,\n state,\n diagnostics,\n );\n const execution = await runClaudeTurns({\n prompt: request.prompt,\n followUpPrompt: request.followUpPrompt,\n workspace: request.workspace,\n run,\n });\n const result = await claudeResult(\n execution,\n claudeObservationRoot(stateRoot, state.credential, request),\n request,\n repositoryInvocation,\n );\n await diagnostics.retainFailure(\n result,\n \"Claude host execution did not complete\",\n );\n await addHookObservation(result, state.hooks);\n await retainEnabledNativeTranscripts(\n result,\n request.runtimePolicy,\n join(stateRoot, \"native-home\", \"projects\"),\n \"claude\",\n request.runtimeRole,\n );\n return result;\n } catch (cause) {\n return await failedNativeTranscripts(\n cause,\n request.runtimePolicy,\n join(stateRoot, \"native-home\", \"projects\"),\n \"claude\",\n request.runtimeRole,\n diagnostics,\n );\n } finally {\n await cleanupNativeState(diagnostics, async () => {\n await releaseRuntimeHooks(hooks);\n await rm(stateRoot, { recursive: true, force: true });\n });\n }\n}\n\nfunction claudeProcessRunner(\n options: ClaudeHostOptions,\n timeoutMs: number,\n request: Request,\n state: Awaited<ReturnType<typeof prepareClaudeState>>,\n diagnostics: HostDiagnostics,\n) {\n return (prompt: string, session?: ClaudeSession) => {\n diagnostics.stage = \"claude-execution\";\n return runClaudeProcess({\n diagnostics,\n argv: claudeTurnArgs(\n options,\n prompt,\n session,\n state.settingsPath,\n state.pluginDirs,\n ),\n cwd: request.workspace,\n env: state.env,\n timeoutMs,\n signal: request.signal,\n });\n };\n}\n\nasync function validateClaudeRequest(\n options: ClaudeHostOptions,\n request: Request,\n) {\n await validateNativeHostRequest(request, \"Claude\");\n const pluginDirs = request.claudePluginDirs\n ? await pluginDirectories(request.workspace, request.claudePluginDirs)\n : [];\n await verifyInvocation(request, pluginDirs);\n requireIsolatedHookSources(request, options);\n const repositoryInvocation = await repositoryMount(request, options);\n return { pluginDirs, repositoryInvocation };\n}\n\nfunction requireIsolatedHookSources(\n request: Request,\n options: ClaudeHostOptions,\n): void {\n if (runtimeHooksEnabled(request.runtimePolicy) && options.projectSettings)\n throw new Error(\"native goals require isolated hook sources\");\n}\n\nasync function addHookObservation(\n result: HostResult,\n hooks: Awaited<ReturnType<typeof prepareHookMounts>> | undefined,\n): Promise<void> {\n if (!hooks) return;\n result.observations?.push(await runtimeHookObservation(hooks));\n}\n\nfunction claudeTurnArgs(\n options: ClaudeHostOptions,\n prompt: string,\n session: ClaudeSession | undefined,\n settingsPath: string,\n pluginDirs: string[],\n): string[] {\n return [\n options.binary,\n \"-p\",\n prompt,\n \"--output-format\",\n \"stream-json\",\n \"--verbose\",\n \"--model\",\n options.model,\n \"--effort\",\n options.effort,\n \"--permission-mode\",\n \"dontAsk\",\n \"--tools\",\n \"Bash,Read,Edit,Skill,Agent\",\n \"--setting-sources\",\n options.projectSettings ? \"project\" : \"\",\n \"--settings\",\n settingsPath,\n \"--strict-mcp-config\",\n \"--mcp-config\",\n '{\"mcpServers\":{}}',\n \"--no-chrome\",\n ...(session ? [session.option, session.id] : []),\n ...pluginDirs.flatMap((path) => [\"--plugin-dir\", path]),\n ];\n}\n\nfunction claudeObservationRoot(\n stateRoot: string,\n credential: string,\n request: Request,\n): string {\n return request.runtimePolicy?.nativeTranscripts === true\n ? join(stateRoot, \"native-home\")\n : dirname(credential);\n}\n\nasync function repositoryObservation(\n execution: Execution,\n configRoot: string,\n request: Request,\n invocation: RepositoryInvocation | null,\n tools: ReturnType<typeof claudeToolCallsObservation>,\n) {\n if (!invocation) return null;\n return claudeRepositoryInvocationObservation({\n invocation,\n stream: execution.initialEvents ?? execution.events,\n configRoot: configRoot,\n workspace: request.workspace,\n tools: execution.initialEvents\n ? claudeToolCallsObservation(execution.initialEvents, 0)\n : tools,\n });\n}\n\nasync function claudeObservations(\n execution: Execution,\n configRoot: string,\n request: Request,\n invocation: RepositoryInvocation | null,\n) {\n const tools = claudeToolCallsObservation(execution.events, execution.code);\n const repository = await repositoryObservation(\n execution,\n configRoot,\n request,\n invocation,\n tools,\n );\n return [\n tools,\n ...runtimeObservations(request.runtimePolicy, request.runtimeRole),\n await observeClaudeNativeGoal(\n configRoot,\n execution.followUpEvents ?? execution.events,\n ),\n claudeNativeControls(execution.events, execution.code),\n ...(repository ? [repository] : []),\n ...(execution.continuation ? [execution.continuation] : []),\n claudeSkillActivationsObservation(execution.events, execution.code),\n ];\n}\n\nfunction claudeArtifacts(execution: Execution) {\n return [\n { id: \"sevro.claude.events\", bytes: Buffer.from(execution.out, \"utf8\") },\n ...(execution.initialOut !== undefined\n ? [\n {\n id: \"sevro.claude.initial-events\",\n bytes: Buffer.from(execution.initialOut, \"utf8\"),\n },\n ]\n : []),\n ...(execution.followUpOut !== undefined\n ? [\n {\n id: \"sevro.claude.follow-up-events\",\n bytes: Buffer.from(execution.followUpOut, \"utf8\"),\n },\n ]\n : []),\n ...(execution.err\n ? [\n {\n id: \"sevro.claude.stderr\",\n bytes: Buffer.from(execution.err, \"utf8\"),\n },\n ]\n : []),\n ];\n}\n\nfunction measuredClaudeUsage(\n summary: ReturnType<typeof summarizeClaudeEvents>,\n execution: Execution,\n) {\n return {\n inputTokens:\n execution.sessionResultsBound === false ? null : summary.inputTokens,\n outputTokens:\n execution.sessionResultsBound === false ? null : summary.outputTokens,\n costUsd: execution.sessionResultsBound === false ? null : summary.costUsd,\n usageComplete:\n execution.sessionResultsBound !== false && summary.usageComplete,\n };\n}\n\nasync function claudeResult(\n execution: Execution,\n configRoot: string,\n request: Request,\n invocation: RepositoryInvocation | null,\n): Promise<HostResult> {\n const summary = summarizeClaudeEvents(execution.events, execution.code);\n const observations = await claudeObservations(\n execution,\n configRoot,\n request,\n invocation,\n );\n return {\n finalMessage: summary.finalMessage,\n complete: summary.complete,\n executionFailed: !summary.complete,\n observations,\n artifacts: claudeArtifacts(execution),\n actualCondition: \"passive\",\n ...measuredClaudeUsage(summary, execution),\n };\n}\n"]}
1
+ {"version":3,"file":"claude.js","sourceRoot":"","sources":["claude.ts"],"names":[],"mappings":"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","sourcesContent":["import { existsSync } from \"node:fs\";\nimport { readFile, realpath, rm, stat } from \"node:fs/promises\";\nimport { dirname, isAbsolute, join } from \"node:path\";\nimport type { HostAdapter, HostResult } from \"../engine\";\nimport { allocateNativeState } from \"../native-transcript-state\";\nimport {\n failedNativeTranscripts,\n retainEnabledNativeTranscripts,\n} from \"../native-transcripts\";\nimport { fixtureParts } from \"../fixtures/preparation\";\nimport {\n prepareHookMounts,\n releaseRuntimeHooks,\n runtimeHookObservation,\n runtimeHooksEnabled,\n type HookMounts,\n} from \"../runtime/hooks\";\nimport { insideRuntimeRoot as inside } from \"../runtime/paths\";\nimport { runtimeObservations } from \"../runtime/state\";\nimport { isRecord } from \"../value-guards\";\nimport { runClaudeTurns, type ClaudeSession } from \"./claude-continuation\";\nimport { validateNativeHostRequest, validHostTimeout } from \"./native-request\";\nimport { summarizeClaudeEvents } from \"./claude-events\";\nimport { observeClaudeNativeGoal } from \"./claude-native-goal\";\nimport { runClaudeProcess } from \"./claude-process\";\nimport {\n claudeRepositoryInvocationObservation,\n verifyClaudeRepositoryInvocation,\n} from \"./claude-repository-invocation\";\nimport { prepareClaudeState, type ClaudeHostOptions } from \"./claude-state\";\nimport {\n cleanupNativeState,\n createHostDiagnostics,\n diagnoseHostRequest,\n diagnosticConfiguration,\n type HostDiagnostics,\n} from \"../host-diagnostics\";\nimport {\n CLAUDE_AUTH_VARIABLES,\n CLAUDE_LOGIN_MARGIN_MS,\n} from \"./claude-credential\";\nimport { claudeToolCallsObservation } from \"./claude-tool-calls\";\nimport { claudeSkillActivationsObservation } from \"./claude-skill-activations\";\nimport { claudeNativeControls } from \"./native-controls\";\nexport type { ClaudeHostOptions } from \"./claude-state\";\n\nconst DEFAULT_TIMEOUT_MS = 10 * 60_000;\n\ntype Request = Parameters<HostAdapter[\"run\"]>[0];\ntype PluginDeclaration = NonNullable<Request[\"claudePluginDirs\"]>;\ntype PluginInvocation = NonNullable<Request[\"explicitSkillInvocation\"]> & {\n scope?: \"plugin\";\n};\ntype RepositoryInvocation = Awaited<\n ReturnType<typeof verifyClaudeRepositoryInvocation>\n>;\ntype Execution = Awaited<ReturnType<typeof runClaudeTurns>>;\n\nasync function pluginDirectories(\n workspace: string,\n declaration: PluginDeclaration,\n): Promise<string[]> {\n const root = await realpath(workspace);\n requireUniquePluginDeclaration(declaration);\n const paths = new Set(declaration.artifactPaths);\n const directories: string[] = [];\n for (const relativeRoot of declaration.artifactRoots)\n directories.push(await declaredPluginDirectory(root, relativeRoot, paths));\n requireDisjointPluginDirectories(directories);\n for (const artifactPath of paths)\n await verifyPluginArtifact(root, artifactPath, declaration, directories);\n return directories;\n}\n\nfunction requireUniquePluginDeclaration(declaration: PluginDeclaration): void {\n if (\n new Set(declaration.artifactRoots).size !==\n declaration.artifactRoots.length ||\n new Set(declaration.artifactPaths).size !== declaration.artifactPaths.length\n )\n throw new Error(\"Claude plugin declaration contains duplicates\");\n}\n\nasync function declaredPluginDirectory(\n root: string,\n relativeRoot: string,\n paths: Set<string>,\n): Promise<string> {\n fixtureParts(relativeRoot);\n if (!paths.has(`${relativeRoot}/.claude-plugin/plugin.json`))\n throw new Error(\"Claude plugin manifest is undeclared\");\n const actual = await realpath(join(root, relativeRoot));\n if (!inside(root, actual))\n throw new Error(\"Claude plugin directory escapes workspace\");\n if (!(await stat(join(actual, \".claude-plugin\", \"plugin.json\"))).isFile())\n throw new Error(\"Claude plugin manifest is missing\");\n return actual;\n}\n\nfunction requireDisjointPluginDirectories(directories: string[]): void {\n if (new Set(directories).size !== directories.length)\n throw new Error(\"Claude plugin directories overlap\");\n if (\n directories.some((item) =>\n directories.some((other) => item !== other && inside(other, item)),\n )\n )\n throw new Error(\"Claude plugin directories overlap\");\n}\n\nasync function verifyPluginArtifact(\n root: string,\n artifactPath: string,\n declaration: PluginDeclaration,\n directories: string[],\n): Promise<void> {\n fixtureParts(artifactPath);\n const index = declaration.artifactRoots.findIndex((item) =>\n artifactPath.startsWith(`${item}/`),\n );\n const directory = directories.at(index);\n if (index < 0 || directory === undefined)\n throw new Error(\"Claude plugin artifact is outside a declared directory\");\n if (!inside(directory, await realpath(join(root, artifactPath))))\n throw new Error(\"Claude plugin artifact escapes workspace\");\n}\n\nfunction pluginSelection(request: Request): PluginInvocation | null {\n const selected = request.explicitSkillInvocation;\n if (!selected || selected.scope === \"repository\") return null;\n return selected;\n}\n\nfunction requirePluginInvocation(\n selected: PluginInvocation,\n prompt: string,\n): void {\n const { token, pluginName, skillName } = selected;\n if (\n token !== `/${pluginName}:${skillName}` ||\n prompt.split(token).length - 1 !== 1 ||\n !/^[a-z][a-z0-9-]*$/.test(pluginName) ||\n !/^[A-Za-z0-9._-]+$/.test(skillName)\n )\n throw new Error(\"invalid Claude explicit skill invocation\");\n}\n\nfunction skillPathDeclared(\n request: Request,\n index: number,\n skillName: string,\n): boolean {\n const relativeRoot = request.claudePluginDirs?.artifactRoots[index];\n return !!request.claudePluginDirs?.artifactPaths.includes(\n `${relativeRoot}/skills/${skillName}/SKILL.md`,\n );\n}\n\nasync function verifyInvocation(\n request: Request,\n directories: string[],\n): Promise<void> {\n const selected = pluginSelection(request);\n if (!selected) return;\n requirePluginInvocation(selected, request.prompt);\n for (const [index, root] of directories.entries()) {\n if (!skillPathDeclared(request, index, selected.skillName)) continue;\n if (await mountedPluginSkill(root, selected)) return;\n }\n throw new Error(\"invoked Claude skill is absent from the package\");\n}\n\nasync function mountedPluginSkill(\n root: string,\n selected: PluginInvocation,\n): Promise<boolean> {\n let manifest: unknown;\n try {\n manifest = JSON.parse(\n await readFile(join(root, \".claude-plugin\", \"plugin.json\"), \"utf8\"),\n );\n } catch (error) {\n throw new Error(\"invalid Claude plugin manifest\", { cause: error });\n }\n if (!isRecord(manifest) || manifest.name !== selected.pluginName)\n return false;\n const skill = await stat(\n join(root, \"skills\", selected.skillName, \"SKILL.md\"),\n ).catch(() => null);\n return !!skill?.isFile();\n}\n\nfunction validClaudeOptions(\n options: ClaudeHostOptions,\n timeoutMs: number,\n): boolean {\n return (\n availableClaudeSandbox() &&\n requiredClaudePaths(options) &&\n optionalClaudePaths(options) &&\n !!options.model &&\n validClaudeEffortTimeout(options.effort, timeoutMs)\n );\n}\nfunction availableClaudeSandbox(): boolean {\n if (process.platform === \"darwin\") return existsSync(\"/usr/bin/sandbox-exec\");\n return (\n process.platform === \"linux\" &&\n existsSync(\"/usr/bin/bwrap\") &&\n existsSync(\"/usr/bin/socat\")\n );\n}\nfunction requiredClaudePaths(options: ClaudeHostOptions): boolean {\n return [\n options.binary,\n options.projectRoot,\n options.resultsRoot,\n ...options.additionalProtectedRoots,\n ].every(isAbsolute);\n}\nfunction optionalClaudePaths(options: ClaudeHostOptions): boolean {\n return [\n options.credentialFile,\n options.uvCacheDir,\n options.toolchainBinDir,\n ].every((path) => path === undefined || isAbsolute(path));\n}\nfunction validClaudeEffortTimeout(effort: string, timeoutMs: number): boolean {\n return !!effort && validHostTimeout(timeoutMs);\n}\n\n/** Run Claude with explicit plugins and its native tool sandbox. */\nexport function createClaudeHost(options: ClaudeHostOptions): HostAdapter {\n const timeoutMs = options.timeoutMs ?? DEFAULT_TIMEOUT_MS;\n if (!validClaudeOptions(options, timeoutMs))\n throw new Error(\"invalid Claude host configuration\");\n return {\n id: \"sevro.host.claude\",\n model: options.model,\n effort: options.effort,\n ...(options.retainHostDiagnostics\n ? {\n configuration: diagnosticConfiguration(options.retainHostDiagnostics),\n }\n : {}),\n hostCapabilities: [\n \"sevro.host.native-goal\",\n \"sevro.host.runtime\",\n \"sevro.host.native-transcripts\",\n \"sevro.host.hooks\",\n \"sevro.host.skill-activations\",\n \"sevro.claude.plugin-dirs\",\n \"sevro.claude.explicit-invocation\",\n ...(options.projectSettings\n ? [\"sevro.claude.repository-invocation\"]\n : []),\n \"sevro.claude.tool-calls\",\n \"sevro.host.native-controls\",\n \"sevro.host.continuation\",\n \"sevro.claude.continuation\",\n ],\n run(request) {\n return runClaudeRequest(options, timeoutMs, request);\n },\n };\n}\n\nasync function repositoryMount(\n request: Request,\n options: ClaudeHostOptions,\n): Promise<RepositoryInvocation | null> {\n if (request.explicitSkillInvocation?.scope !== \"repository\") return null;\n if (!options.projectSettings)\n throw new Error(\n \"Claude repository invocation requires project setting sources\",\n );\n return verifyClaudeRepositoryInvocation(request);\n}\n\nasync function runClaudeRequest(\n options: ClaudeHostOptions,\n timeoutMs: number,\n request: Request,\n): Promise<HostResult> {\n const diagnostics = createHostDiagnostics(\n \"claude\",\n options.retainHostDiagnostics,\n request,\n );\n return diagnoseHostRequest(diagnostics, async () => {\n diagnostics.stage = \"request-validation\";\n await diagnostics.readCredentials(options.credentialFile);\n return executeClaudeRequest(options, timeoutMs, request, diagnostics);\n });\n}\n\n/** Every turn shares one access token, so it must outlive all of them. */\nfunction claudeLoginLifetime(timeoutMs: number, request: Request): number {\n const turns = request.followUpPrompt === undefined ? 1 : 2;\n return timeoutMs * turns + CLAUDE_LOGIN_MARGIN_MS;\n}\n\nasync function executeClaudeRequest(\n options: ClaudeHostOptions,\n timeoutMs: number,\n request: Request,\n diagnostics: HostDiagnostics,\n): Promise<HostResult> {\n const { pluginDirs, repositoryInvocation } = await validateClaudeRequest(\n options,\n request,\n );\n diagnostics.stage = \"state-allocation\";\n const stateRoot = await allocateNativeState(\n \"claude-\",\n request.runtimePolicy ? request.workspace : undefined,\n );\n let hooks: HookMounts | undefined;\n try {\n diagnostics.stage = \"state-preparation\";\n const state = await prepareClaudeState(\n stateRoot,\n options,\n request,\n pluginDirs,\n claudeLoginLifetime(timeoutMs, request),\n );\n diagnostics.registerCredentials(state.env, CLAUDE_AUTH_VARIABLES);\n hooks = state.hooks;\n const run = claudeProcessRunner(\n options,\n timeoutMs,\n request,\n state,\n diagnostics,\n );\n const execution = await runClaudeTurns({\n prompt: request.prompt,\n followUpPrompt: request.followUpPrompt,\n workspace: request.workspace,\n run,\n });\n const result = await claudeResult(\n execution,\n claudeObservationRoot(stateRoot, state.credential, request),\n request,\n repositoryInvocation,\n );\n await diagnostics.retainFailure(\n result,\n \"Claude host execution did not complete\",\n );\n await addHookObservation(result, state.hooks);\n await retainEnabledNativeTranscripts(\n result,\n request.runtimePolicy,\n join(stateRoot, \"native-home\", \"projects\"),\n \"claude\",\n request.runtimeRole,\n );\n return result;\n } catch (cause) {\n return await failedNativeTranscripts(\n cause,\n request.runtimePolicy,\n join(stateRoot, \"native-home\", \"projects\"),\n \"claude\",\n request.runtimeRole,\n diagnostics,\n );\n } finally {\n await cleanupNativeState(diagnostics, async () => {\n await releaseRuntimeHooks(hooks);\n await rm(stateRoot, { recursive: true, force: true });\n });\n }\n}\n\nfunction claudeProcessRunner(\n options: ClaudeHostOptions,\n timeoutMs: number,\n request: Request,\n state: Awaited<ReturnType<typeof prepareClaudeState>>,\n diagnostics: HostDiagnostics,\n) {\n return (prompt: string, session?: ClaudeSession) => {\n diagnostics.stage = \"claude-execution\";\n return runClaudeProcess({\n diagnostics,\n argv: claudeTurnArgs(\n options,\n prompt,\n session,\n state.settingsPath,\n state.pluginDirs,\n ),\n cwd: request.workspace,\n env: state.env,\n timeoutMs,\n signal: request.signal,\n });\n };\n}\n\nasync function validateClaudeRequest(\n options: ClaudeHostOptions,\n request: Request,\n) {\n await validateNativeHostRequest(request, \"Claude\");\n const pluginDirs = request.claudePluginDirs\n ? await pluginDirectories(request.workspace, request.claudePluginDirs)\n : [];\n await verifyInvocation(request, pluginDirs);\n requireIsolatedHookSources(request, options);\n const repositoryInvocation = await repositoryMount(request, options);\n return { pluginDirs, repositoryInvocation };\n}\n\nfunction requireIsolatedHookSources(\n request: Request,\n options: ClaudeHostOptions,\n): void {\n if (runtimeHooksEnabled(request.runtimePolicy) && options.projectSettings)\n throw new Error(\"native goals require isolated hook sources\");\n}\n\nasync function addHookObservation(\n result: HostResult,\n hooks: Awaited<ReturnType<typeof prepareHookMounts>> | undefined,\n): Promise<void> {\n if (!hooks) return;\n result.observations?.push(await runtimeHookObservation(hooks));\n}\n\nfunction claudeTurnArgs(\n options: ClaudeHostOptions,\n prompt: string,\n session: ClaudeSession | undefined,\n settingsPath: string,\n pluginDirs: string[],\n): string[] {\n return [\n options.binary,\n \"-p\",\n prompt,\n \"--output-format\",\n \"stream-json\",\n \"--verbose\",\n \"--model\",\n options.model,\n \"--effort\",\n options.effort,\n \"--permission-mode\",\n \"dontAsk\",\n \"--tools\",\n \"Bash,Read,Edit,Skill,Agent,SendMessage\",\n \"--setting-sources\",\n options.projectSettings ? \"project\" : \"\",\n \"--settings\",\n settingsPath,\n \"--strict-mcp-config\",\n \"--mcp-config\",\n '{\"mcpServers\":{}}',\n \"--no-chrome\",\n ...(session ? [session.option, session.id] : []),\n ...pluginDirs.flatMap((path) => [\"--plugin-dir\", path]),\n ];\n}\n\nfunction claudeObservationRoot(\n stateRoot: string,\n credential: string,\n request: Request,\n): string {\n return request.runtimePolicy?.nativeTranscripts === true\n ? join(stateRoot, \"native-home\")\n : dirname(credential);\n}\n\nasync function repositoryObservation(\n execution: Execution,\n configRoot: string,\n request: Request,\n invocation: RepositoryInvocation | null,\n tools: ReturnType<typeof claudeToolCallsObservation>,\n) {\n if (!invocation) return null;\n return claudeRepositoryInvocationObservation({\n invocation,\n stream: execution.initialEvents ?? execution.events,\n configRoot: configRoot,\n workspace: request.workspace,\n tools: execution.initialEvents\n ? claudeToolCallsObservation(execution.initialEvents, 0)\n : tools,\n });\n}\n\nasync function claudeObservations(\n execution: Execution,\n configRoot: string,\n request: Request,\n invocation: RepositoryInvocation | null,\n) {\n const tools = claudeToolCallsObservation(execution.events, execution.code);\n const repository = await repositoryObservation(\n execution,\n configRoot,\n request,\n invocation,\n tools,\n );\n return [\n tools,\n ...runtimeObservations(request.runtimePolicy, request.runtimeRole),\n await observeClaudeNativeGoal(\n configRoot,\n execution.followUpEvents ?? execution.events,\n ),\n claudeNativeControls(execution.events, execution.code),\n ...(repository ? [repository] : []),\n ...(execution.continuation ? [execution.continuation] : []),\n claudeSkillActivationsObservation(execution.events, execution.code),\n ];\n}\n\nfunction claudeArtifacts(execution: Execution) {\n return [\n { id: \"sevro.claude.events\", bytes: Buffer.from(execution.out, \"utf8\") },\n ...(execution.initialOut !== undefined\n ? [\n {\n id: \"sevro.claude.initial-events\",\n bytes: Buffer.from(execution.initialOut, \"utf8\"),\n },\n ]\n : []),\n ...(execution.followUpOut !== undefined\n ? [\n {\n id: \"sevro.claude.follow-up-events\",\n bytes: Buffer.from(execution.followUpOut, \"utf8\"),\n },\n ]\n : []),\n ...(execution.err\n ? [\n {\n id: \"sevro.claude.stderr\",\n bytes: Buffer.from(execution.err, \"utf8\"),\n },\n ]\n : []),\n ];\n}\n\nfunction measuredClaudeUsage(\n summary: ReturnType<typeof summarizeClaudeEvents>,\n execution: Execution,\n) {\n return {\n inputTokens:\n execution.sessionResultsBound === false ? null : summary.inputTokens,\n outputTokens:\n execution.sessionResultsBound === false ? null : summary.outputTokens,\n costUsd: execution.sessionResultsBound === false ? null : summary.costUsd,\n usageComplete:\n execution.sessionResultsBound !== false && summary.usageComplete,\n };\n}\n\nasync function claudeResult(\n execution: Execution,\n configRoot: string,\n request: Request,\n invocation: RepositoryInvocation | null,\n): Promise<HostResult> {\n const summary = summarizeClaudeEvents(execution.events, execution.code);\n const observations = await claudeObservations(\n execution,\n configRoot,\n request,\n invocation,\n );\n return {\n finalMessage: summary.finalMessage,\n complete: summary.complete,\n executionFailed: !summary.complete,\n observations,\n artifacts: claudeArtifacts(execution),\n actualCondition: \"passive\",\n ...measuredClaudeUsage(summary, execution),\n };\n}\n"]}
@@ -28,16 +28,16 @@ Local installation records the selected version in the project lockfile.
28
28
 
29
29
  ## Current release
30
30
 
31
- The current release is `1.1.0`. Install this exact version with npm:
31
+ The current release is `1.1.1`. Install this exact version with npm:
32
32
 
33
33
  ```sh
34
- npm install --save-exact @bjoernrochel/sevro@1.1.0
34
+ npm install --save-exact @bjoernrochel/sevro@1.1.1
35
35
  ```
36
36
 
37
37
  Or with Bun:
38
38
 
39
39
  ```sh
40
- bun add --exact @bjoernrochel/sevro@1.1.0
40
+ bun add --exact @bjoernrochel/sevro@1.1.1
41
41
  ```
42
42
 
43
43
  <!-- sevro-current-release:end -->
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bjoernrochel/sevro",
3
- "version": "1.1.0",
3
+ "version": "1.1.1",
4
4
  "license": "SEE LICENSE IN LICENSE",
5
5
  "description": "A standalone evaluation runner for agentic coding capabilities",
6
6
  "type": "module",
@@ -196,13 +196,15 @@ function claudeToolAllowRules(
196
196
  "Read",
197
197
  "Skill",
198
198
  "Agent",
199
+ "SendMessage",
199
200
  workspace ? absoluteRule(workspace, "Edit") : "Edit",
200
201
  ];
201
- if (!runtime) return ["Bash", "Edit", "Skill", "Agent"];
202
+ if (!runtime) return ["Bash", "Edit", "Skill", "Agent", "SendMessage"];
202
203
  return [
203
204
  "Bash",
204
205
  "Skill",
205
206
  "Agent",
207
+ "SendMessage",
206
208
  absoluteRule(runtime.workspace, "Edit"),
207
209
  absoluteRule(runtime.root, "Edit"),
208
210
  ...(runtime.cacheRoots ?? []).map((root) => absoluteRule(root, "Edit")),
@@ -453,7 +453,7 @@ function claudeTurnArgs(
453
453
  "--permission-mode",
454
454
  "dontAsk",
455
455
  "--tools",
456
- "Bash,Read,Edit,Skill,Agent",
456
+ "Bash,Read,Edit,Skill,Agent,SendMessage",
457
457
  "--setting-sources",
458
458
  options.projectSettings ? "project" : "",
459
459
  "--settings",