Merge remote-tracking branch 'gitea/master'

This commit is contained in:
Codex committed 2026-10-21 14:31:39 +09:00
commit 0bc9faa129
5 files changed
+235

No files matched your search

@@ -0,0 +1,26 @@
import { build } from 'esbuild'
import fs from 'node:fs'
import { spawnSync } from 'node:child_process'
const source=String.raw`
import { ClaudeKernel } from './src/main/agent/claude/claude-kernel'
import { mkdtempSync } from 'node:fs'
import { tmpdir } from 'node:os'
import { join } from 'node:path'
process.env.CLAUDE_TEST_USER_DATA=mkdtempSync(join(tmpdir(),'ycode-full-access-policy-'))
const results=[]
for(const [name,extra] of [
['ordinary',{}],['classifier-false',{classifierApprovable:false}],
['compound-decision',{decisionReasonType:'subcommandResults'}],
['reason-code-present',{decisionReasonCode:'fixture-unspecified-code'}],
['explicit-ask-rule',{matchedAskRule:{source:'fixture',toolName:'Bash',ruleContent:'echo sample'}}]
] as const){
const kernel:any=new ClaudeKernel({sessionId:'fixture',workspaceRoot:process.env.CLAUDE_TEST_USER_DATA!,model:{} as any,permissionMode:'full-access',agentMode:'craft',onSessionId:()=>{}})
const controller=new AbortController();let approvals=0;let details:any
kernel.active={settled:false,request:{runId:'fixture',signal:controller.signal,emit:()=>{},interactions:{approval:async(...args:any[])=>{approvals++;details=args[5];return {kind:'approval',optionId:'allow-once'}}}}}
const result=await kernel.canUseTool('Bash',{command:'echo sample'},{signal:controller.signal,toolUseID:'fixture-tool',description:'Fixture command',...extra})
results.push({case:name,permissionMode:'full-access',agentMode:'craft',approvalCount:approvals,result:result.behavior,requestKind:details?.requestKind})
}
console.log(JSON.stringify({scope:'Offline current host policy with synthetic callback metadata; no SDK query/CLI, no real command execution. Not the raw callback metadata from the user session.',results},null,2))
`
await build({stdin:{contents:source,loader:'ts',resolveDir:process.cwd(),sourcefile:'full-access-review.ts'},outfile:'.tmp/full-access-review/policy.mjs',bundle:true,platform:'node',format:'esm',banner:{js:"import { createRequire } from 'node:module'; const require=createRequire(import.meta.url);"},logLevel:'warning',plugins:[{name:'offline-only',setup(p){p.onResolve({filter:/^(electron|@anthropic-ai\/claude-agent-sdk)$/},args=>({path:args.path,namespace:'offline'}));p.onLoad({filter:/.*/,namespace:'offline'},args=>({loader:'js',contents:args.path==='electron'?`export const app={getPath:()=>process.env.CLAUDE_TEST_USER_DATA,getAppPath:()=>process.cwd()};export const safeStorage={isEncryptionAvailable:()=>false};`:`export const query=()=>{throw Error('SDK execution forbidden in probe')};export const createSdkMcpServer=x=>x;export const tool=(...x)=>x;`}))}}]})
const result=spawnSync(process.execPath,['.tmp/full-access-review/policy.mjs'],{encoding:'utf8',timeout:20000});if(result.stderr)process.stderr.write(result.stderr);fs.writeFileSync('.tmp/full-access-review/policy-results.json',result.stdout);console.log(result.stdout);process.exitCode=result.status??1
@@ -0,0 +1,44 @@
{
"scope": "Offline current host policy with synthetic callback metadata; no SDK query/CLI, no real command execution. Not the raw callback metadata from the user session.",
"results": [
{
"case": "ordinary",
"permissionMode": "full-access",
"agentMode": "craft",
"approvalCount": 0,
"result": "allow"
},
{
"case": "classifier-false",
"permissionMode": "full-access",
"agentMode": "craft",
"approvalCount": 1,
"result": "allow",
"requestKind": "permission"
},
{
"case": "compound-decision",
"permissionMode": "full-access",
"agentMode": "craft",
"approvalCount": 1,
"result": "allow",
"requestKind": "permission"
},
{
"case": "reason-code-present",
"permissionMode": "full-access",
"agentMode": "craft",
"approvalCount": 1,
"result": "allow",
"requestKind": "permission"
},
{
"case": "explicit-ask-rule",
"permissionMode": "full-access",
"agentMode": "craft",
"approvalCount": 1,
"result": "allow",
"requestKind": "rule-intercept"
}
]
}
@@ -0,0 +1,75 @@
{
"scope": "Read-only local user-requested session inspection; only permission metadata is retained. No raw transcript, command, paths, credentials or personal session identifiers included.",
"observedDate": "2026-10-21",
"sessionPermissionMode": "full-access",
"sessionAgentMode": "craft",
"sdkPermissionModes": [
"acceptEdits"
],
"approvals": [
{
"ordinal": 1,
"status": "answered",
"toolName": "Bash",
"requestKind": "permission",
"hasPersistedMatchedRule": false,
"hasPersistedReason": true,
"allowScope": "session"
},
{
"ordinal": 2,
"status": "answered",
"toolName": "Bash",
"requestKind": "permission",
"hasPersistedMatchedRule": false,
"hasPersistedReason": true,
"allowScope": "session"
},
{
"ordinal": 3,
"status": "answered",
"toolName": "Bash",
"requestKind": "permission",
"hasPersistedMatchedRule": false,
"hasPersistedReason": true,
"allowScope": "session"
},
{
"ordinal": 4,
"status": "answered",
"toolName": "Bash",
"requestKind": "permission",
"hasPersistedMatchedRule": false,
"hasPersistedReason": true,
"allowScope": "session"
},
{
"ordinal": 5,
"status": "answered",
"toolName": "Bash",
"requestKind": "permission",
"hasPersistedMatchedRule": false,
"hasPersistedReason": true,
"allowScope": "session"
},
{
"ordinal": 6,
"status": "answered",
"toolName": "Bash",
"requestKind": "permission",
"hasPersistedMatchedRule": false,
"hasPersistedReason": true,
"allowScope": "session"
},
{
"ordinal": 7,
"status": "answered",
"toolName": "PowerShell",
"requestKind": "permission",
"hasPersistedMatchedRule": false,
"hasPersistedReason": true,
"allowScope": "once"
}
],
"rawSdkDecisionFieldsRetained": false
}