@typescape-ai/cli 1.8.1 → 1.8.2
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/cli.js +1 -1
- package/package.json +1 -1
package/dist/cli.js
CHANGED
|
@@ -694,7 +694,7 @@ Setup Instructions:
|
|
|
694
694
|
bunx typescape config validate
|
|
695
695
|
`);process.exit(O)}import{execSync as c$e}from"child_process";function A$e(e){if(e.summary)return e.summary;if(e.coverage)return{total_files:e.coverage.total_files,reviewed_files:e.coverage.reviewed_files,drifted_files:e.coverage.drifted,never_reviewed_files:e.coverage.never_reviewed,coverage_percent:e.coverage.coverage_percent};N({code:"invalid_response_shape",message:"Coverage API response missing both summary and coverage fields."},Ha)}function l$e(e,n){let t={failOnDrift:!1,failOnUncovered:!1,summary:!1,format:n},a=0;while(a<e.length){let r=e[a];if(r==="--repo")t.repo=e[a+1]||"",a+=2;else if(r.startsWith("--repo="))t.repo=r.slice(7),a++;else if(r==="--branch")t.branch=e[a+1]||"",a+=2;else if(r.startsWith("--branch="))t.branch=r.slice(9),a++;else if(r==="--sha")t.sha=e[a+1]||"",a+=2;else if(r.startsWith("--sha="))t.sha=r.slice(6),a++;else if(r==="--globs")t.globs=e[a+1]||"",a+=2;else if(r.startsWith("--globs="))t.globs=r.slice(8),a++;else if(r==="--fail-on-drift")t.failOnDrift=!0,a++;else if(r==="--fail-on-uncovered")t.failOnUncovered=!0,a++;else if(r==="--min-coverage"){let i=e[a+1];if(i===void 0||i==="")N({code:"invalid_flag_value",message:"--min-coverage requires a numeric value"},G);let o=Number(i);if(Number.isNaN(o)||o<0||o>100)N({code:"invalid_flag_value",message:`--min-coverage must be a number between 0 and 100, got: ${i}`},G);t.minCoverage=o,a+=2}else if(r.startsWith("--min-coverage=")){let i=r.slice(15),o=Number(i);if(Number.isNaN(o)||o<0||o>100)N({code:"invalid_flag_value",message:`--min-coverage must be a number between 0 and 100, got: ${i}`},G);t.minCoverage=o,a++}else if(r==="--summary")t.summary=!0,a++;else if(r==="--format")t.format=e[a+1]||"text",a+=2;else if(r.startsWith("--format="))t.format=r.slice(9),a++;else a++}return t}function lH(e){try{return c$e(`git rev-parse "${e}"`,{encoding:"utf-8",stdio:["pipe","pipe","pipe"]}).trim()}catch{N({code:"branch_resolution_failed",message:`Could not resolve branch '${e}' to a git SHA. Make sure you are in a git repository and the branch exists.`},G)}}async function dH(e,n,t,a){let r=l$e(e,a),i=r.repo==="."?n.repoId:r.repo;if(!i&&n.repoId)r.repo=n.repoId;let o=i??n.repoId;if(!o)N({code:"missing_required_flag",message:"Missing --repo flag. Specify a repository ID or set repo.id in .typescape/config.yaml."},G);if(r.branch&&r.sha)N({code:"conflicting_flags",message:"--branch and --sha are mutually exclusive. Use one or the other."},G);let s;if(r.sha)s=r.sha;else if(r.branch)s=lH(r.branch);else s=lH("HEAD");let c={git_sha:s};if(r.globs)c.globs=r.globs;let l=(await t.get(`/repos/${encodeURIComponent(o)}/coverage`,{query:c})).body,d=A$e(l),u=[];if(r.failOnDrift&&d.drifted_files>0)u.push(`${d.drifted_files} file${d.drifted_files===1?"":"s"} drifted`);if(r.failOnUncovered&&d.never_reviewed_files>0)u.push(`${d.never_reviewed_files} file${d.never_reviewed_files===1?"":"s"} never reviewed`);if(r.minCoverage!==void 0&&d.coverage_percent<r.minCoverage)u.push(`coverage ${d.coverage_percent}% < threshold ${r.minCoverage}%`);if(r.format==="json"){let p=r.summary?{repo_id:l.repo_id,git_sha:l.git_sha,summary:d,gate_result:u.length>0?"fail":"pass",gate_failures:u,request_id:l.request_id}:{...l,gate_result:u.length>0?"fail":"pass",gate_failures:u};console.log(JSON.stringify(p,null,2))}else{let{reviewed_files:p,total_files:m,coverage_percent:g,drifted_files:y,never_reviewed_files:w}=d;if(console.log(`${p}/${m} files reviewed (${g}%), ${y} drifted, ${w} never reviewed`),u.length>0){console.log(""),console.log("Gate failures:");for(let _ of u)console.log(` - ${_}`)}}if(u.length>0)process.exit(st);process.exit(O)}function d$e(e){let n={format:"json"},t=0;while(t<e.length){let a=e[t];if(a==="--repo")n.repo=e[t+1]||"",t+=2;else if(a.startsWith("--repo="))n.repo=a.slice(7),t++;else if(a==="--state")n.state=e[t+1]||"",t+=2;else if(a.startsWith("--state="))n.state=a.slice(8),t++;else if(a==="--file-paths")n.filePaths=e[t+1]||"",t+=2;else if(a.startsWith("--file-paths="))n.filePaths=a.slice(13),t++;else if(a==="--cursor")n.cursor=e[t+1]||"",t+=2;else if(a.startsWith("--cursor="))n.cursor=a.slice(9),t++;else if(a==="--limit")n.limit=Number.parseInt(e[t+1]||"20",10),t+=2;else if(a.startsWith("--limit="))n.limit=Number.parseInt(a.slice(8),10),t++;else if(a==="--format")n.format=e[t+1]||"json",t+=2;else if(a.startsWith("--format="))n.format=a.slice(9),t++;else t++}return n}async function uH(e,n,t){let a=d$e(e),r={};if(a.repo)r.repo_id=a.repo;if(a.state)r.state=a.state;if(a.filePaths)r.file_paths=a.filePaths;if(a.cursor)r.cursor=a.cursor;if(a.limit!==void 0)r.limit=String(a.limit);let i=await t.get("/sessions",{query:r});if(a.format==="json")console.log(JSON.stringify(i.body,null,2));else{let o=i.body.items??[];console.log(`Sessions (${o.length}):`);for(let s of o)console.log(` ${s.id} ${s.state} ${s.file_path} ${s.title??""}`);if(i.body.cursor)console.log(`
|
|
696
696
|
Next cursor: ${i.body.cursor}`)}process.exit(O)}function u$e(e){let n={session:"",format:"json"},t=0;while(t<e.length){let a=e[t];if(a==="--session")n.session=e[t+1]||"",t+=2;else if(a.startsWith("--session="))n.session=a.slice(10),t++;else if(a==="--format")n.format=e[t+1]||"json",t+=2;else if(a.startsWith("--format="))n.format=a.slice(9),t++;else t++}return n}async function pH(e,n,t){let a=u$e(e);if(!a.session)N({code:"missing_required_flag",message:"Missing required flag: --session"},G);let r=await t.get(`/sessions/${encodeURIComponent(a.session)}`);if(a.format==="json")console.log(JSON.stringify(r.body,null,2));else{let i=r.body.session;if(console.log(`Session ID: ${i.id}`),console.log(`Title: ${i.title??"\u2014"}`),console.log(`State: ${i.state}`),console.log(`Source Type: ${i.source_type??"unknown"}`),console.log(`File Path: ${i.file_path??"N/A"}`),i.read_only)console.log("Read Only: yes");if(console.log(`Threads: ${i.summary?.total_threads??0} total, ${i.summary?.open_threads??0} open`),console.log(`Comments: ${i.summary?.total_comments??0}`),i.root_session_id)console.log(`Root Session: ${i.root_session_id}`);if(i.supersedes_session_id)console.log(`Supersedes: ${i.supersedes_session_id}`)}process.exit(O)}function p$e(e){let n={session:"",format:"json"},t=0;while(t<e.length){let a=e[t];if(a==="--session")n.session=e[t+1]||"",t+=2;else if(a.startsWith("--session="))n.session=a.slice(10),t++;else if(a==="--block-id")n.blockId=e[t+1]||"",t+=2;else if(a.startsWith("--block-id="))n.blockId=a.slice(11),t++;else if(a==="--status")n.status=e[t+1]||"",t+=2;else if(a.startsWith("--status="))n.status=a.slice(9),t++;else if(a==="--cursor")n.cursor=e[t+1]||"",t+=2;else if(a.startsWith("--cursor="))n.cursor=a.slice(9),t++;else if(a==="--limit")n.limit=Number.parseInt(e[t+1]||"50",10),t+=2;else if(a.startsWith("--limit="))n.limit=Number.parseInt(a.slice(8),10),t++;else if(a==="--format")n.format=e[t+1]||"json",t+=2;else if(a.startsWith("--format="))n.format=a.slice(9),t++;else t++}return n}async function mH(e,n,t){let a=p$e(e);if(!a.session)N({code:"missing_required_flag",message:"Missing required flag: --session"},G);let r={};if(a.blockId)r.block_id=a.blockId;if(a.status)r.status=a.status;if(a.cursor)r.cursor=a.cursor;if(a.limit!==void 0)r.limit=String(a.limit);let i=await t.get(`/sessions/${encodeURIComponent(a.session)}/threads`,{query:r});if(a.format==="json")console.log(JSON.stringify(i.body,null,2));else{let o=i.body.threads??[],s=i.body.total_count??o.length;console.log(`Threads (${s}):`);for(let c of o){let A=c.severity?` [${c.severity}]`:"",l=c.block_id?` on ${c.block_id}`:" (session-level)";console.log(` ${c.thread_id} ${c.status}${A}${l} (${c.comment_count} comments)`)}if(i.body.next_cursor)console.log(`
|
|
697
|
-
Next cursor: ${i.body.next_cursor}`)}process.exit(O)}function m$e(e){let n={session:"",bodyMd:"",format:"json"},t=0;while(t<e.length){let a=e[t];if(a==="--session")n.session=e[t+1]||"",t+=2;else if(a.startsWith("--session="))n.session=a.slice(10),t++;else if(a==="--block-id")n.blockId=e[t+1]||"",t+=2;else if(a.startsWith("--block-id="))n.blockId=a.slice(11),t++;else if(a==="--body")n.bodyMd=e[t+1]||"",t+=2;else if(a.startsWith("--body="))n.bodyMd=a.slice(7),t++;else if(a==="--severity")n.severity=e[t+1]||"",t+=2;else if(a.startsWith("--severity="))n.severity=a.slice(11),t++;else if(a==="--idempotency-key")n.idempotencyKey=e[t+1]||"",t+=2;else if(a.startsWith("--idempotency-key="))n.idempotencyKey=a.slice(18),t++;else if(a==="--format")n.format=e[t+1]||"json",t+=2;else if(a.startsWith("--format="))n.format=a.slice(9),t++;else t++}return n}async function gH(e,n,t){let a=m$e(e);if(!a.session)N({code:"missing_required_flag",message:"Missing required flag: --session"},G);if(!a.bodyMd)N({code:"missing_required_flag",message:"Missing required flag: --body"},G);let r={body_md:a.bodyMd,source:"automation"};if(a.blockId)r.block_id=a.blockId;if(a.severity)r.severity=a.severity;let i={};if(a.idempotencyKey)i["Idempotency-Key"]=a.idempotencyKey;let o=await t.post(`/sessions/${encodeURIComponent(a.session)}/threads`,{body:r,headers:i});if(a.format==="json")console.log(JSON.stringify(o.body,null,2));else{let s=o.body;if(console.log(`Thread created: ${s.thread_id}`),console.log(`Status: ${s.status}`),s.severity)console.log(`Severity: ${s.severity}`);if(s.block_id)console.log(`Block: ${s.block_id}`);console.log(`Request ID: ${s.request_id}`)}process.exit(O)}function g$e(e){let n={session:"",thread:"",bodyMd:"",format:"json"},t=0;while(t<e.length){let a=e[t];if(a==="--session")n.session=e[t+1]||"",t+=2;else if(a.startsWith("--session="))n.session=a.slice(10),t++;else if(a==="--thread")n.thread=e[t+1]||"",t+=2;else if(a.startsWith("--thread="))n.thread=a.slice(9),t++;else if(a==="--body")n.bodyMd=e[t+1]||"",t+=2;else if(a.startsWith("--body="))n.bodyMd=a.slice(7),t++;else if(a==="--idempotency-key")n.idempotencyKey=e[t+1]||"",t+=2;else if(a.startsWith("--idempotency-key="))n.idempotencyKey=a.slice(18),t++;else if(a==="--format")n.format=e[t+1]||"json",t+=2;else if(a.startsWith("--format="))n.format=a.slice(9),t++;else t++}return n}async function bH(e,n,t){let a=g$e(e);if(!a.session)N({code:"missing_required_flag",message:"Missing required flag: --session"},G);if(!a.thread)N({code:"missing_required_flag",message:"Missing required flag: --thread"},G);if(!a.bodyMd)N({code:"missing_required_flag",message:"Missing required flag: --body"},G);let r={body_md:a.bodyMd,source:"automation"},i={};if(a.idempotencyKey)i["Idempotency-Key"]=a.idempotencyKey;let o=encodeURIComponent(a.session),s=encodeURIComponent(a.thread),c=await t.post(`/sessions/${o}/threads/${s}/comments`,{body:r,headers:i});if(a.format==="json")console.log(JSON.stringify(c.body,null,2));else{let A=c.body;console.log(`Comment posted: ${A.comment_id}`),console.log(`Thread: ${A.thread_id}`),console.log(`Request ID: ${A.request_id}`)}process.exit(O)}function b$e(e){let n={session:"",thread:"",action:"resolve",format:"json"},t=0;while(t<e.length){let a=e[t];if(a==="--session")n.session=e[t+1]||"",t+=2;else if(a.startsWith("--session="))n.session=a.slice(10),t++;else if(a==="--thread")n.thread=e[t+1]||"",t+=2;else if(a.startsWith("--thread="))n.thread=a.slice(9),t++;else if(a==="--action")n.action=e[t+1]||"resolve",t+=2;else if(a.startsWith("--action="))n.action=a.slice(9),t++;else if(a==="--disposition")n.disposition=e[t+1]||"",t+=2;else if(a.startsWith("--disposition="))n.disposition=a.slice(14),t++;else if(a==="--body")n.body=e[t+1]||"",t+=2;else if(a.startsWith("--body="))n.body=a.slice(7),t++;else if(a==="--if-match")n.ifMatch=e[t+1]||"",t+=2;else if(a.startsWith("--if-match="))n.ifMatch=a.slice(11),t++;else if(a==="--reopen")n.action="reopen",t++;else if(a==="--format")n.format=e[t+1]||"json",t+=2;else if(a.startsWith("--format="))n.format=a.slice(9),t++;else t++}return n}async function fH(e,n,t){let a=b$e(e);if(!a.session)N({code:"missing_required_flag",message:"Missing required flag: --session"},G);if(!a.thread)N({code:"missing_required_flag",message:"Missing required flag: --thread"},G);let r=encodeURIComponent(a.session),i=encodeURIComponent(a.thread),o=a.action==="reopen"?"reopen":"resolve",s={};if(a.disposition||a.body){let l={};if(a.disposition)l.state=a.disposition;if(a.body)l.rationale_md=a.body;s.disposition=l}let c={};if(a.ifMatch)c["If-Match"]=a.ifMatch;let A=await t.post(`/sessions/${r}/threads/${i}/${o}`,{body:s,headers:c});if(a.format==="json")console.log(JSON.stringify(A.body,null,2));else{let l=A.body,d=a.action==="reopen"?"Reopened":"Resolved";console.log(`${d} thread: ${l.thread_id}`),console.log(`Status: ${l.status}`),console.log(`Version: ${l.version}`),console.log(`Request ID: ${l.request_id}`)}process.exit(O)}function f$e(e){let n={session:"",thread:"",state:"",format:"json"},t=0;while(t<e.length){let a=e[t];if(a==="--session")n.session=e[t+1]||"",t+=2;else if(a.startsWith("--session="))n.session=a.slice(10),t++;else if(a==="--thread")n.thread=e[t+1]||"",t+=2;else if(a.startsWith("--thread="))n.thread=a.slice(9),t++;else if(a==="--state")n.state=e[t+1]||"",t+=2;else if(a.startsWith("--state="))n.state=a.slice(8),t++;else if(a==="--rationale")n.rationaleMd=e[t+1]||"",t+=2;else if(a.startsWith("--rationale="))n.rationaleMd=a.slice(12),t++;else if(a==="--format")n.format=e[t+1]||"json",t+=2;else if(a.startsWith("--format="))n.format=a.slice(9),t++;else t++}return n}async function hH(e,n,t){let a=f$e(e);if(!a.session)N({code:"missing_required_flag",message:"Missing required flag: --session"},G);if(!a.thread)N({code:"missing_required_flag",message:"Missing required flag: --thread"},G);if(!a.state)N({code:"missing_required_flag",message:"Missing required flag: --state"},G);let r={state:a.state};if(a.rationaleMd)r.rationale_md=a.rationaleMd;let i=encodeURIComponent(a.session),o=encodeURIComponent(a.thread),s=await t.post(`/sessions/${i}/threads/${o}/dispositions`,{body:r});if(a.format==="json")console.log(JSON.stringify(s.body,null,2));else{let c=s.body;console.log(`Disposition recorded: ${c.disposition_id}`),console.log(`Thread: ${c.thread_id}`),console.log(`State: ${c.state}`),console.log(`Request ID: ${c.request_id}`)}process.exit(O)}function h$e(e){let n={session:"",thread:"",type:"",format:"json"},t=0;while(t<e.length){let a=e[t];if(a==="--session")n.session=e[t+1]||"",t+=2;else if(a.startsWith("--session="))n.session=a.slice(10),t++;else if(a==="--thread")n.thread=e[t+1]||"",t+=2;else if(a.startsWith("--thread="))n.thread=a.slice(9),t++;else if(a==="--type")n.type=e[t+1]||"",t+=2;else if(a.startsWith("--type="))n.type=a.slice(7),t++;else if(a==="--commit-sha")n.commitSha=e[t+1]||"",t+=2;else if(a.startsWith("--commit-sha="))n.commitSha=a.slice(13),t++;else if(a==="--proposed-change-id")n.proposedChangeId=e[t+1]||"",t+=2;else if(a.startsWith("--proposed-change-id="))n.proposedChangeId=a.slice(21),t++;else if(a==="--pr-url")n.prUrl=e[t+1]||"",t+=2;else if(a.startsWith("--pr-url="))n.prUrl=a.slice(9),t++;else if(a==="--attestation")n.attestation=e[t+1]||"",t+=2;else if(a.startsWith("--attestation="))n.attestation=a.slice(14),t++;else if(a==="--format")n.format=e[t+1]||"json",t+=2;else if(a.startsWith("--format="))n.format=a.slice(9),t++;else t++}return n}async function yH(e,n,t){let a=h$e(e);if(!a.session)N({code:"missing_required_flag",message:"Missing required flag: --session"},G);if(!a.thread)N({code:"missing_required_flag",message:"Missing required flag: --thread"},G);if(!a.type)N({code:"missing_required_flag",message:"Missing required flag: --type"},G);let r={};if(a.commitSha)r.commit_sha=a.commitSha;if(a.proposedChangeId)r.proposed_change_id=a.proposedChangeId;if(a.prUrl)r.pr_url=a.prUrl;if(a.attestation)r.attestation=a.attestation;let i={evidence_type:a.type,evidence_json:r},o=encodeURIComponent(a.session),s=encodeURIComponent(a.thread),c=await t.post(`/sessions/${o}/threads/${s}/evidence`,{body:i});if(a.format==="json")console.log(JSON.stringify(c.body,null,2));else{let A=c.body;console.log(`Evidence attached: ${A.evidence_id}`),console.log(`Thread: ${A.thread_id}`),console.log(`Type: ${A.type}`),console.log(`Request ID: ${A.request_id}`)}process.exit(O)}var wH=["file","doc","pr","custom"],y$e=new Set(wH);function w$e(e){let n={sourceType:"",kind:"",key:"",headSessionId:"",format:"json"},t=0;while(t<e.length){let a=e[t];if(a==="--source-type")n.sourceType=e[t+1]||"",t+=2;else if(a.startsWith("--source-type="))n.sourceType=a.slice(14),t++;else if(a==="--repo-id")n.repoId=e[t+1]||"",t+=2;else if(a.startsWith("--repo-id="))n.repoId=a.slice(10),t++;else if(a==="--project-id")n.projectId=e[t+1]||"",t+=2;else if(a.startsWith("--project-id="))n.projectId=a.slice(13),t++;else if(a==="--kind")n.kind=e[t+1]||"",t+=2;else if(a.startsWith("--kind="))n.kind=a.slice(7),t++;else if(a==="--key")n.key=e[t+1]||"",t+=2;else if(a.startsWith("--key="))n.key=a.slice(6),t++;else if(a==="--head-session")n.headSessionId=e[t+1]||"",t+=2;else if(a.startsWith("--head-session="))n.headSessionId=a.slice(15),t++;else if(a==="--format")n.format=e[t+1]||"json",t+=2;else if(a.startsWith("--format="))n.format=a.slice(9),t++;else t++}return n}async function kH(e,n,t){let a=w$e(e);if(!a.sourceType)N({code:"missing_required_flag",message:"Missing required flag: --source-type"},G);if(!a.kind)N({code:"missing_required_flag",message:"Missing required flag: --kind"},G);if(!a.key)N({code:"missing_required_flag",message:"Missing required flag: --key"},G);if(!a.headSessionId)N({code:"missing_required_flag",message:"Missing required flag: --head-session"},G);let r=a.kind.trim().toLowerCase();if(!y$e.has(r))N({code:"invalid_flag_value",message:`Invalid --kind value: ${a.kind}. Must be one of: ${wH.join(", ")}`},G);let i={source_type:a.sourceType,kind:r,key:a.key,head_session_id:a.headSessionId};if(a.repoId)i.repo_id=a.repoId;if(a.projectId)i.project_id=a.projectId;let o=await t.post("/review-refs",{body:i});if(a.format==="json")console.log(JSON.stringify(o.body,null,2));else console.log(`Review ref created: ${o.body.id}`),console.log(`Head session: ${o.body.head_session_id??"none"}`),console.log(`Request ID: ${o.body.request_id}`);process.exit(O)}function k$e(e){let n={reviewRefId:"",format:"json"},t=0;while(t<e.length){let a=e[t];if(a==="--review-ref")n.reviewRefId=e[t+1]||"",t+=2;else if(a.startsWith("--review-ref="))n.reviewRefId=a.slice(13),t++;else if(a==="--format")n.format=e[t+1]||"json",t+=2;else if(a.startsWith("--format="))n.format=a.slice(9),t++;else t++}return n}async function BH(e,n,t){let a=k$e(e);if(!a.reviewRefId)N({code:"missing_required_flag",message:"Missing required flag: --review-ref"},G);let r=await t.get(`/review-refs/${encodeURIComponent(a.reviewRefId)}/resolve`);if(a.format==="json")console.log(JSON.stringify(r.body,null,2));else console.log(`Review ref: ${r.body.review_ref_id}`),console.log(`Head session: ${r.body.head_session_id}`),console.log(`State: ${r.body.state}`),console.log(`Request ID: ${r.body.request_id}`);process.exit(O)}function B$e(e){let n={reviewRefId:"",headSessionId:"",format:"json"},t=0;while(t<e.length){let a=e[t];if(a==="--review-ref")n.reviewRefId=e[t+1]||"",t+=2;else if(a.startsWith("--review-ref="))n.reviewRefId=a.slice(13),t++;else if(a==="--head-session")n.headSessionId=e[t+1]||"",t+=2;else if(a.startsWith("--head-session="))n.headSessionId=a.slice(15),t++;else if(a==="--expected-head")n.expectedHeadSessionId=e[t+1]||"",t+=2;else if(a.startsWith("--expected-head="))n.expectedHeadSessionId=a.slice(16),t++;else if(a==="--format")n.format=e[t+1]||"json",t+=2;else if(a.startsWith("--format="))n.format=a.slice(9),t++;else t++}return n}async function CH(e,n,t){let a=B$e(e);if(!a.reviewRefId)N({code:"missing_required_flag",message:"Missing required flag: --review-ref"},G);if(!a.headSessionId)N({code:"missing_required_flag",message:"Missing required flag: --head-session"},G);let r={head_session_id:a.headSessionId};if(a.expectedHeadSessionId)r.expected_head_session_id=a.expectedHeadSessionId;let i=await t.post(`/review-refs/${encodeURIComponent(a.reviewRefId)}/advance`,{body:r});if(a.format==="json")console.log(JSON.stringify(i.body,null,2));else console.log(`Advanced review ref: ${i.body.review_ref.id}`),console.log(`New head session: ${i.body.review_ref.head_session_id}`),console.log(`Request ID: ${i.body.request_id}`);process.exit(O)}function C$e(e){let n={session:"",approverEmails:[],format:"json"},t=0;while(t<e.length){let a=e[t];if(a==="--session")n.session=e[t+1]||"",t+=2;else if(a.startsWith("--session="))n.session=a.slice(10),t++;else if(a==="--approver"){if(e[t+1])n.approverEmails.push(e[t+1]);t+=2}else if(a.startsWith("--approver="))n.approverEmails.push(a.slice(11)),t++;else if(a==="--approvers"){if(e[t+1])n.approverEmails.push(...e[t+1].split(","));t+=2}else if(a.startsWith("--approvers="))n.approverEmails.push(...a.slice(12).split(",")),t++;else if(a==="--message")n.message=e[t+1]||"",t+=2;else if(a.startsWith("--message="))n.message=a.slice(10),t++;else if(a==="--idempotency-key")n.idempotencyKey=e[t+1]||"",t+=2;else if(a.startsWith("--idempotency-key="))n.idempotencyKey=a.slice(18),t++;else if(a==="--format")n.format=e[t+1]||"json",t+=2;else if(a.startsWith("--format="))n.format=a.slice(9),t++;else t++}return n}async function _H(e,n,t){let a=C$e(e);if(!a.session)N({code:"missing_required_flag",message:"Missing required flag: --session"},G);if(a.approverEmails.length===0)N({code:"missing_required_flag",message:"Missing required flag: --approver or --approvers"},G);let r={approver_emails:a.approverEmails};if(a.message)r.message=a.message;let i={};if(a.idempotencyKey)i["Idempotency-Key"]=a.idempotencyKey;let o=await t.post(`/sessions/${encodeURIComponent(a.session)}/request-approval`,{body:r,headers:i});if(a.format==="json")console.log(JSON.stringify(o.body,null,2));else{let s=o.body.approval_requests??[];console.log(`Approval requested (${s.length} approvers):`);for(let c of s)console.log(` ${c.id} ${c.approver_email} ${c.state}`);console.log(`Request ID: ${o.body.request_id}`)}process.exit(O)}var eK=Do(bY(),1),nK=Do(MY(),1);import{readFileSync as VY}from"fs";import{resolve as XY}from"path";var oRe=x.string().regex(/^[a-f0-9]{64}$/,{message:"Must be a 64-character lowercase hex SHA-256 digest"}),Jt=x.string().regex(/^sha256:[a-f0-9]{64}$/,{message:'Must be formatted as "sha256:<64 hex chars>"'}),GY=x.string().datetime(),RY=["export","render_receipt","lineage_diff","attestation","verification_instructions"],PY=x.object({path:x.string().min(1),sha256:Jt,type:x.enum(RY),view:x.string().optional()}),Rx=x.object({render_profile:x.string(),renderer_version:x.string(),sanitizer_version:x.string(),config_hash:Jt}),zY=x.object({enable_export_hash:x.boolean(),enable_export_signature:x.boolean(),sealed_render_of_record:x.boolean(),enable_merkle_roots:x.boolean()}),UY=x.object({alg:x.string(),key_id:x.string(),sig:x.string()}),sRe=x.object({session_id:x.string().min(1),render_artifact_sha256:Jt,render_sha256:Jt,sealed_at:GY,provenance:Rx}),cRe=x.object({bundle_version:x.literal("evidence.v1"),session_id:x.string().min(1),source_content_sha256:Jt,created_at:GY,integrity_settings:zY,renderer_provenance:Rx.optional(),contents:x.array(PY),bundle_sha256:Jt,signature:UY.optional()});var ARe=/^(?:[a-f0-9]{40}|[a-f0-9]{64})$/,HY=x.string().datetime();var lRe=x.enum(["git","upload"]),dRe=x.enum(["approved","rejected","conditional"]),uRe=x.record(x.string(),x.unknown()),TY=x.object({approval_id:x.string().min(1),decision:dRe,decided_by_participant_id:x.string().min(1),decided_by_display:x.string().min(1),decided_at:HY,conditions:x.array(uRe)}),pRe=x.object({schema_version:x.literal("attestation.v1"),session_id:x.string().min(1),source_type:lRe,source_content_sha256:Jt,source_blob_oid:x.string().regex(ARe,"source_blob_oid must be 40 or 64 lowercase hex chars").optional(),timestamp:HY,approvals:x.array(TY).min(1),export_sha256:Jt,blocks_merkle_root:Jt.optional(),threads_merkle_root:Jt.optional()}).superRefine((e,n)=>{if(e.source_type==="git"&&!e.source_blob_oid)n.addIssue({code:x.ZodIssueCode.custom,path:["source_blob_oid"],message:"source_blob_oid is required when source_type=git"});if(e.source_type!=="git"&&e.source_blob_oid)n.addIssue({code:x.ZodIssueCode.custom,path:["source_blob_oid"],message:"source_blob_oid is only allowed when source_type=git"});let t=e.blocks_merkle_root!==void 0,a=e.threads_merkle_root!==void 0;if(t!==a)n.addIssue({code:x.ZodIssueCode.custom,path:["blocks_merkle_root"],message:"blocks_merkle_root and threads_merkle_root must either both be set or both be omitted"})});var amn=Uint8Array.from([48,46,2,1,0,48,5,6,3,43,101,112,4,34,4,32]),rmn=Uint8Array.from([48,42,48,5,6,3,43,101,112,3,33,0]);import{createHash as mRe}from"crypto";var gRe=new Set(["integrity","exported_at","request_id","view_requested","view_resolved","partial","incomplete_sections"]),bRe=new Set(["statistics"]),fRe=new Set(["change_status","change_basis","block_key_derived"]),hRe=new Set(["classification"]);function ZY(e){return mRe("sha256").update(e,"utf8").digest("hex")}function Nn(e,n){if(e==null&&n==null)return 0;if(e==null)return 1;if(n==null)return-1;return e.localeCompare(n)}function yRe(e,n){if(e==null&&n==null)return 0;if(e==null)return 1;if(n==null)return-1;return e-n}function wRe(e){return[...e].sort((n,t)=>yRe(n.block_index,t.block_index))}function kRe(e){return[...e].sort((n,t)=>Nn(n.thread_id,t.thread_id))}function BRe(e){return[...e].sort((n,t)=>Nn(n.comment_id,t.comment_id))}function CRe(e){return[...e].sort((n,t)=>{let a=Nn(n.provider,t.provider);if(a!==0)return a;if(a=Nn(n.external_id,t.external_id),a!==0)return a;return Nn(n.url,t.url)})}function _Re(e){return[...e].sort()}function ERe(e){return[...e].sort((n,t)=>{let a=Nn(n.ref_id,t.ref_id);if(a!==0)return a;let r=OY(n),i=OY(t);for(let o=0;o<r.length;o++){let s=Nn(r[o],i[o]);if(s!==0)return s}return 0})}function OY(e){let n=e.target??{},t=n.anchor??{};return[e.purpose??null,n.source_type??null,n.file_path??null,n.doc_key??null,t.type??null,t.block_id??null]}function vRe(e){return[...e].sort()}function QRe(e){return[...e].sort((n,t)=>{let a=Nn(n.emoji,t.emoji);if(a!==0)return a;let r=n.reactor??{},i=t.reactor??{};if(a=Nn(r.participant_id,i.participant_id),a!==0)return a;if(a=Nn(r.email,i.email),a!==0)return a;return Nn(n.created_at,t.created_at)})}function xRe(e){return[...e].sort((n,t)=>Nn(n.request_id,t.request_id))}function IRe(e){return[...e].sort((n,t)=>Nn(n.approval_id,t.approval_id))}function DRe(e){return[...e].sort((n,t)=>Nn(n.proposed_change_id,t.proposed_change_id))}function FRe(e){return[...e].sort((n,t)=>{let a=Nn(n.kind,t.kind);if(a!==0)return a;if(a=Nn(n.require_verification_tier,t.require_verification_tier),a!==0)return a;if(a=Nn(n.description,t.description),a!==0)return a;let r=Array.isArray(n.thread_ids)?[...n.thread_ids].sort().join(","):"",i=Array.isArray(t.thread_ids)?[...t.thread_ids].sort().join(","):"";if(a=r.localeCompare(i),a!==0)return a;let o=Array.isArray(n.check_rule_ids)?[...n.check_rule_ids].sort().join(","):"",s=Array.isArray(t.check_rule_ids)?[...t.check_rule_ids].sort().join(","):"";return o.localeCompare(s)})}function $Re(e){let n={...e};if(Array.isArray(n.mentions))n.mentions=vRe(n.mentions);if(Array.isArray(n.reactions))n.reactions=QRe(n.reactions);return n}function SRe(e){let n={...e};if(Array.isArray(n.comments))n.comments=BRe(n.comments).map((t)=>$Re(t));if(Array.isArray(n.links))n.links=CRe(n.links);if(Array.isArray(n.tags))n.tags=_Re(n.tags);if(Array.isArray(n.references))n.references=ERe(n.references);return n}function LRe(e){let n={...e};if(Array.isArray(n.conditions))n.conditions=FRe(n.conditions).map((t)=>{let a={...t};if(Array.isArray(a.thread_ids))a.thread_ids=[...a.thread_ids].sort();if(Array.isArray(a.check_rule_ids))a.check_rule_ids=[...a.check_rule_ids].sort();return a});return n}function Px(e,n){let t={};for(let[a,r]of Object.entries(e)){if(gRe.has(a))continue;if(!n.includeNonAuthoritative&&bRe.has(a))continue;t[a]=r}if(Array.isArray(t.blocks)){let a=wRe(t.blocks);if(!n.includeNonAuthoritative)a=a.map((r)=>{let i={};for(let[o,s]of Object.entries(r))if(!fRe.has(o))i[o]=s;return i});t.blocks=a}if(Array.isArray(t.threads)){let a=kRe(t.threads);a=a.map((r)=>{let i=SRe(r);if(!n.includeNonAuthoritative){let o={};for(let[s,c]of Object.entries(i))if(!hRe.has(s))o[s]=c;i=o}return i}),t.threads=a}if(Array.isArray(t.approval_requests))t.approval_requests=xRe(t.approval_requests);if(Array.isArray(t.approvals))t.approvals=IRe(t.approvals).map((a)=>LRe(a));if(Array.isArray(t.proposed_changes))t.proposed_changes=DRe(t.proposed_changes);if(Array.isArray(t.participants)){let a=t.participants;t.participants=[...a].sort((r,i)=>Nn(r.id,i.id))}if(t.extensions&&typeof t.extensions==="object"&&!Array.isArray(t.extensions)){let a=t.extensions,r={};for(let[i,o]of Object.entries(a))if(o&&typeof o==="object"&&!Array.isArray(o)&&(n.includeNonAuthoritative||o.authoritative===!0))r[i]=o;if(Object.keys(r).length>0)t.extensions=r;else delete t.extensions}return t}function zx(e){let n=Px(e,{includeNonAuthoritative:!1});return ZY(Os(n))}function Ux(e){let n=Px(e,{includeNonAuthoritative:!0});return ZY(Os(n))}import{sign as lmn,verify as jRe,createPublicKey as qRe,createPrivateKey as dmn}from"crypto";function NRe(e){let n=Uint8Array.from([48,42,48,5,6,3,43,101,112,3,33,0]),t=new Uint8Array(n.length+e.length);return t.set(n,0),t.set(e,n.length),Buffer.from(t)}function Hx(e,n,t){if(n.alg!=="ed25519")return!1;if(t.publicKey.length!==32)return!1;try{let a=NRe(t.publicKey),r=qRe({key:a,format:"der",type:"spki"}),i=Uint8Array.from(Buffer.from(n.sig,"base64"));return jRe(null,new TextEncoder().encode(e),r,i)}catch{return!1}}var YY={$schema:"https://json-schema.org/draft/2020-12/schema",$id:"https://typescape.ai/schemas/export.v1.schema.json",title:"Typescape Export v1",$comment:"Non-enforceable invariants: (1) threads[].block_id must reference blocks[].block_id when anchor.type is block/range; (2) blocks must be sorted by block_index ascending; (3) threads must be sorted by thread_id for hash stability; (4) non-authoritative extensions (authoritative=false) are excluded from integrity.export_sha256; (5) breaking changes require new v2 artifacts and MUST NOT semantically drift v1 files in place.",type:"object",additionalProperties:!1,required:["schema_version","exported_at","view_requested","view_resolved","session","blocks","threads","synthesis"],properties:{schema_version:{const:"v1"},exported_at:{type:"string",format:"date-time"},view_requested:{type:["string","null"]},view_resolved:{type:"string",minLength:1},integrity:{type:"object",additionalProperties:!1,properties:{canonicalization:{type:"string"},export_sha256:{$ref:"#/$defs/sha256"},export_full_sha256:{$ref:"#/$defs/sha256"},signature:{type:"object",additionalProperties:!1,required:["alg","key_id","sig"],properties:{alg:{type:"string",minLength:1},key_id:{type:"string",minLength:1},sig:{type:"string",minLength:1}}},blocks_merkle_root:{$ref:"#/$defs/sha256"},threads_merkle_root:{$ref:"#/$defs/sha256"}}},rendering:{type:"object",additionalProperties:!1,properties:{include_render_html:{type:"boolean"},html_csp:{type:"string"}}},session:{type:"object",additionalProperties:!1,required:["id","source_type","file_path","source_content_sha256","state","block_id_scheme","block_key_scheme","created_at"],properties:{id:{type:"string",minLength:1},source_type:{type:"string",enum:["git","upload"]},repo_id:{type:"string",minLength:1},git_sha:{$ref:"#/$defs/gitSha"},project_id:{type:"string",minLength:1},upload_batch_id:{type:"string",minLength:1},file_path:{$ref:"#/$defs/filePath"},doc_key:{type:"string",minLength:1},corpus_snapshot_id:{type:"string",minLength:1},source_context:{type:"object",additionalProperties:!1,required:["type"],properties:{type:{type:"string",minLength:1},origin_url:{type:"string",format:"uri"},origin_format:{type:"string",minLength:1},extracted_by:{type:"string",minLength:1},extracted_at:{type:"string",format:"date-time"},content_sha256:{$ref:"#/$defs/sha256"}}},extra:{},root_session_id:{type:"string",minLength:1},supersedes_session_id:{type:"string",minLength:1},source_blob_oid:{type:"string",minLength:1},source_content_sha256:{$ref:"#/$defs/sha256"},source_size_bytes:{type:"integer",minimum:0},title:{type:"string"},state:{type:"string",enum:["active","closed","archived"]},block_id_scheme:{type:"string",minLength:1},block_key_scheme:{type:"string",minLength:1},created_at:{type:"string",format:"date-time"},billable_at:{type:"string",format:"date-time"}},allOf:[{if:{properties:{source_type:{const:"git"}},required:["source_type"]},then:{required:["repo_id","git_sha"],properties:{repo_id:{type:"string",minLength:1},git_sha:{$ref:"#/$defs/gitSha"}}}},{if:{properties:{source_type:{const:"upload"}},required:["source_type"]},then:{required:["project_id","upload_batch_id"],properties:{project_id:{type:"string",minLength:1},upload_batch_id:{type:"string",minLength:1}}}}]},blocks:{type:"array",items:{type:"object",additionalProperties:!1,required:["block_id","block_index","block_type","start_line","end_line"],properties:{block_id:{type:"string",minLength:1},block_key:{type:["string","null"],minLength:1},block_key_source:{type:["string","null"],enum:["marker","sidecar",null]},block_key_derived:{type:["object","null"],additionalProperties:!0},block_index:{type:"integer",minimum:0},block_type:{type:"string",enum:["heading","paragraph","code_block","table","thematic_break","html","blockquote","list_item","image"]},start_line:{type:"integer",minimum:1},end_line:{type:"integer",minimum:1},plaintext:{type:"string"},change_status:{type:"string",enum:["unchanged","modified","added","removed","moved"]},change_basis:{type:"string",enum:["block_key","fingerprint_ui_only","none"]}}}},threads:{type:"array",items:{type:"object",additionalProperties:!1,required:["thread_id","anchor","status","thread_type","source","severity","created_at","comments"],properties:{thread_id:{type:"string",minLength:1},block_id:{type:["string","null"],minLength:1},anchor:{type:"object",additionalProperties:!1,required:["type"],properties:{type:{type:"string",enum:["block","range","session"]},start_offset:{type:"integer",minimum:0},end_offset:{type:"integer",minimum:0}}},references:{type:"array",items:{$ref:"#/$defs/anchorRef"}},duplicate_of_thread_id:{type:"string",minLength:1},status:{type:"string",enum:["open","resolved","draft"]},thread_type:{type:"string",enum:["human","system_finding","intake"]},source:{type:"string",enum:["human","system","automation"]},finding_id:{type:"string",minLength:1},rule_id:{type:"string",minLength:1},rule_fingerprint:{type:"string",minLength:1},check_run_id:{type:"string",minLength:1},severity:{type:"string",enum:["suggestion","needs_changes","blocking"]},tags:{type:"array",items:{type:"string",minLength:1}},classification:{type:"object",required:["non_authoritative"],properties:{non_authoritative:{const:!0}},additionalProperties:!0},assignee:{type:"string",minLength:1},block_snapshot:{type:"object",additionalProperties:!1,required:["plaintext","hash"],properties:{plaintext:{type:"string"},hash:{$ref:"#/$defs/sha256"}}},created_at:{type:"string",format:"date-time"},comments:{type:"array",items:{$ref:"#/$defs/comment"}},links:{type:"array",items:{type:"object",additionalProperties:!1,required:["link_type","provider","url"],properties:{link_type:{type:"string",minLength:1},provider:{type:"string",minLength:1},url:{type:"string",format:"uri"},external_id:{type:"string",minLength:1}}}}},allOf:[{if:{properties:{anchor:{type:"object",properties:{type:{const:"session"}},required:["type"]}},required:["anchor"]},then:{properties:{block_id:{type:"null"}}}},{if:{properties:{anchor:{type:"object",properties:{type:{const:"block"}},required:["type"]}},required:["anchor"]},then:{required:["block_id"],properties:{block_id:{type:"string",minLength:1}}}},{if:{properties:{anchor:{type:"object",properties:{type:{const:"range"}},required:["type"]}},required:["anchor"]},then:{required:["block_id"],properties:{block_id:{type:"string",minLength:1},anchor:{type:"object",additionalProperties:!1,required:["type","start_offset","end_offset"],properties:{type:{const:"range"},start_offset:{type:"integer",minimum:0},end_offset:{type:"integer",minimum:0}}}}}}]}},synthesis:{type:"object",additionalProperties:!1,required:["blocking","needs_changes","suggestions","resolved","summary"],properties:{blocking:{type:"array",items:{$ref:"#/$defs/synthesisItem"}},needs_changes:{type:"array",items:{$ref:"#/$defs/synthesisItem"}},suggestions:{type:"array",items:{$ref:"#/$defs/synthesisItem"}},resolved:{type:"array",items:{$ref:"#/$defs/synthesisItem"}},summary:{$ref:"#/$defs/synthesisSummary"}}},reconciliation_prompt:{type:"string"},issues:{type:"array",items:{type:"object",additionalProperties:!1,required:["issue_id","title","status","source","anchors","created_at"],properties:{issue_id:{type:"string",minLength:1},title:{type:"string",minLength:1},status:{type:"string",enum:["open","in_progress","resolved","archived"]},source:{type:"string",minLength:1},tags:{type:"array",items:{type:"string",minLength:1}},anchors:{type:"array",minItems:1,items:{$ref:"#/$defs/anchorRef"}},created_at:{type:"string",format:"date-time"},updated_at:{type:"string",format:"date-time"}}}},approval_requests:{type:"array",items:{type:"object",additionalProperties:!1,required:["request_id","requested_from","role","status"],properties:{request_id:{type:"string",minLength:1},requested_from:{type:"string",minLength:1},role:{type:"string",minLength:1},status:{type:"string",minLength:1},deadline_at:{type:"string",format:"date-time"},responded_at:{type:"string",format:"date-time"}}}},approvals:{type:"array",items:{type:"object",additionalProperties:!1,required:["approval_id","participant_id","decision","decided_by","decided_at"],properties:{approval_id:{type:"string",minLength:1},participant_id:{type:"string",minLength:1},decision:{type:"string",enum:["approve","reject","conditional"]},decided_by:{type:"string",minLength:1},decided_at:{type:"string",format:"date-time"},comment_md:{type:"string"},conditions:{type:"array",items:{type:"object",additionalProperties:!1,required:["condition_id","kind","description"],properties:{condition_id:{type:"string",minLength:1},kind:{type:"string",minLength:1},description:{type:"string",minLength:1},thread_ids:{type:"array",items:{type:"string",minLength:1}},require_verification_tier:{type:"string",minLength:1}}}}}}},acknowledgements:{type:"array",items:{type:"object",additionalProperties:!1,required:["block_id","participant_id","ack_type","created_at"],properties:{block_id:{type:"string",minLength:1},participant_id:{type:"string",minLength:1},participant_display:{type:"string",minLength:1},ack_type:{type:"string",enum:["read","confirmed"]},created_at:{type:"string",format:"date-time"}}}},policy_status:{type:"object",additionalProperties:!1,required:["verdict","reasons"],properties:{verdict:{type:"string",enum:["pass","fail","warn"]},reasons:{type:"array",items:{type:"object",additionalProperties:!1,required:["code"],properties:{code:{type:"string",minLength:1},details:{type:"object",additionalProperties:!0},thread_ids:{type:"array",items:{type:"string",minLength:1}},approval_ids:{type:"array",items:{type:"string",minLength:1}}}}}}},proposed_changes:{type:"array",items:{type:"object",additionalProperties:!1,required:["proposed_change_id","source_thread_ids","target","expected_source_content_sha256","patch_sha256","state","created_at"],properties:{proposed_change_id:{type:"string",minLength:1},source_thread_ids:{type:"array",minItems:1,items:{type:"string",minLength:1}},target:{$ref:"#/$defs/contentRef"},expected_source_content_sha256:{$ref:"#/$defs/sha256"},patch_sha256:{$ref:"#/$defs/sha256"},state:{type:"string",enum:["proposed","applied","failed","superseded"]},applied_commit_sha:{$ref:"#/$defs/gitSha"},applied_pr_url:{type:"string",format:"uri"},applied_upload_batch_id:{type:"string",minLength:1},applied_file_content_sha256:{$ref:"#/$defs/sha256"},created_at:{type:"string",format:"date-time"}}}},attestation:{type:"object",additionalProperties:!1,required:["attestation_id","schema_version","payload_sha256","signature"],properties:{attestation_id:{type:"string",minLength:1},schema_version:{const:"attestation.v1"},payload_sha256:{$ref:"#/$defs/sha256"},signature:{type:"object",additionalProperties:!1,required:["alg","key_id","sig"],properties:{alg:{type:"string",minLength:1},key_id:{type:"string",minLength:1},sig:{type:"string",minLength:1}}}}},extensions:{type:"object",propertyNames:{type:"string",pattern:"^[a-z][a-z0-9_.-]*$"},additionalProperties:{type:"object",required:["schema_version","authoritative"],properties:{schema_version:{type:"string",pattern:"^[a-z][a-z0-9_.-]*\\.v[0-9]+$"},authoritative:{type:"boolean"}},additionalProperties:!0}},statistics:{type:"object",additionalProperties:!1,properties:{total_threads:{type:"integer",minimum:0},open_threads:{type:"integer",minimum:0},resolved_threads:{type:"integer",minimum:0},total_comments:{type:"integer",minimum:0},unique_commenters:{type:"integer",minimum:0},suggestions_total:{type:"integer",minimum:0},suggestions_accepted:{type:"integer",minimum:0}}}},$defs:{gitSha:{type:"string",pattern:"^(?:[0-9a-f]{40}|[0-9a-f]{64})$"},sha256:{type:"string",pattern:"^[0-9a-f]{64}$"},filePath:{type:"string",minLength:1,allOf:[{pattern:"^(?!/).+"},{not:{pattern:"(^|/)\\.\\.(?:/|$)"}},{pattern:"^[^\\u0000]+$"}]},anchorRef:{type:"object",additionalProperties:!1,required:["schema_version","source_type","file_path","anchor"],properties:{schema_version:{const:"anchor_ref.v1"},source_type:{type:"string",enum:["git","upload"]},repo_id:{type:"string",minLength:1},git_sha:{$ref:"#/$defs/gitSha"},project_id:{type:"string",minLength:1},upload_batch_id:{type:"string",minLength:1},file_path:{$ref:"#/$defs/filePath"},doc_key:{type:"string",minLength:1},anchor:{type:"object",additionalProperties:!1,required:["type"],properties:{type:{type:"string",enum:["block","range","session"]},block_id:{type:"string",minLength:1},range:{type:"object",additionalProperties:!1,required:["start_offset","end_offset"],properties:{start_offset:{type:"integer",minimum:0},end_offset:{type:"integer",minimum:0}}}},allOf:[{if:{properties:{type:{const:"block"}},required:["type"]},then:{required:["block_id"],properties:{block_id:{type:"string",minLength:1}}}},{if:{properties:{type:{const:"range"}},required:["type"]},then:{required:["block_id","range"],properties:{block_id:{type:"string",minLength:1},range:{type:"object",additionalProperties:!1,required:["start_offset","end_offset"],properties:{start_offset:{type:"integer",minimum:0},end_offset:{type:"integer",minimum:0}}}}}},{if:{properties:{type:{const:"session"}},required:["type"]},then:{not:{anyOf:[{required:["block_id"]},{required:["range"]}]}}}]},non_authoritative:{type:"boolean"}},allOf:[{if:{properties:{source_type:{const:"git"}},required:["source_type"]},then:{required:["repo_id","git_sha"],properties:{repo_id:{type:"string",minLength:1},git_sha:{$ref:"#/$defs/gitSha"}}}},{if:{properties:{source_type:{const:"upload"}},required:["source_type"]},then:{required:["project_id","upload_batch_id"],properties:{project_id:{type:"string",minLength:1},upload_batch_id:{type:"string",minLength:1}}}}]},contentRef:{type:"object",additionalProperties:!1,required:["source_type","file_path"],properties:{source_type:{type:"string",enum:["git","upload"]},repo_id:{type:"string",minLength:1},git_sha:{$ref:"#/$defs/gitSha"},project_id:{type:"string",minLength:1},upload_batch_id:{type:"string",minLength:1},file_path:{$ref:"#/$defs/filePath"}},allOf:[{if:{properties:{source_type:{const:"git"}},required:["source_type"]},then:{required:["repo_id","git_sha"],properties:{repo_id:{type:"string",minLength:1},git_sha:{$ref:"#/$defs/gitSha"}}}},{if:{properties:{source_type:{const:"upload"}},required:["source_type"]},then:{required:["project_id","upload_batch_id"],properties:{project_id:{type:"string",minLength:1},upload_batch_id:{type:"string",minLength:1}}}}]},synthesisItem:{type:"object",additionalProperties:!1,required:["thread_id","block_id","first_comment","status"],properties:{thread_id:{type:"string",minLength:1},block_id:{type:["string","null"],minLength:1},first_comment:{type:"string"},status:{type:"string",enum:["open","resolved","wont_fix"]}}},synthesisSummary:{type:"object",additionalProperties:!1,required:["total_threads","open_blocking","open_needs_changes","open_suggestions","resolved"],properties:{total_threads:{type:"integer",minimum:0},open_blocking:{type:"integer",minimum:0},open_needs_changes:{type:"integer",minimum:0},open_suggestions:{type:"integer",minimum:0},resolved:{type:"integer",minimum:0}}},comment:{type:"object",additionalProperties:!1,required:["comment_id","author","created_at","body_md","author_source"],properties:{comment_id:{type:"string",minLength:1},author:{type:"object",additionalProperties:!1,properties:{display:{type:"string"},email:{type:"string",format:"email"}}},created_at:{type:"string",format:"date-time"},edited_at:{type:"string",format:"date-time"},body_md:{type:"string",minLength:1},redacted:{type:"boolean"},redacted_at:{type:"string",format:"date-time"},redaction_reason_code:{type:"string",minLength:1},author_source:{type:"string",minLength:1},mentions:{type:"array",items:{type:"string",minLength:1}},reactions:{type:"array",items:{type:"string",minLength:1}},suggestion:{type:"object",additionalProperties:!0},suggestion_state:{type:"string",minLength:1},edit_history:{type:"array",items:{type:"object",additionalProperties:!1,required:["edited_at","editor_source","body_md"],properties:{edited_at:{type:"string",format:"date-time"},editor_source:{type:"string",minLength:1},body_md:{type:"string",minLength:1}}}}}}}};var hc=0,KY=1,GRe=2,RRe=3,WY=4,Tx=5;function PRe(e){let n={file:"",strict:!1,format:"text"},t=0;while(t<e.length){let a=e[t];if(a==="--public-key")n.publicKey=e[t+1],t+=2;else if(a.startsWith("--public-key="))n.publicKey=a.slice(13),t++;else if(a==="--keys-url")n.keysUrl=e[t+1],t+=2;else if(a.startsWith("--keys-url="))n.keysUrl=a.slice(11),t++;else if(a==="--strict")n.strict=!0,t++;else if(a==="--format")n.format=e[t+1]||"text",t+=2;else if(a.startsWith("--format="))n.format=a.slice(9),t++;else if(a==="--json")n.format="json",t++;else if(!a.startsWith("-")&&!n.file)n.file=a,t++;else t++}return n}function zRe(e,n){let t=new eK.default({allErrors:!0,strict:!1});nK.default(t);let a=t.compile(n);if(a(e))return{check:"schema",status:"pass",message:"Export matches export.v1 schema"};let i=(a.errors??[]).map((o)=>({path:o.instancePath||"/",keyword:o.keyword,message:o.message,params:o.params}));return{check:"schema",status:"fail",message:`Schema validation failed: ${i.length} error(s)`,details:i}}function URe(e){let n=[],t=e.blocks??[],a=e.threads??[],r=e.session??{},i=new Set(t.map((o)=>o.block_id));for(let o=1;o<t.length;o++){let s=t[o-1].block_index,c=t[o].block_index;if(c<s)n.push(`blocks[${o}].block_index (${c}) < blocks[${o-1}].block_index (${s}): not ascending`)}for(let o=0;o<a.length;o++){let s=a[o],c=s.anchor??{},A=c.type,l=s.block_id??c.block_id;if(A==="block"||A==="range"){if(!l)n.push(`threads[${o}] (${s.thread_id}): anchor.type="${A}" but block_id is null/missing`);else if(!i.has(l))n.push(`threads[${o}] (${s.thread_id}): block_id="${l}" not found in blocks[]`)}if(A==="session"&&l)n.push(`threads[${o}] (${s.thread_id}): anchor.type="session" but block_id is non-null`)}if(!r.source_content_sha256)n.push("session.source_content_sha256 is missing or null");if(n.length===0)return{check:"anchors",status:"pass",message:"All anchor invariants satisfied"};return{check:"anchors",status:"fail",message:`${n.length} anchor invariant violation(s)`,details:n}}function HRe(e){let n=e.integrity;if(!n)return{check:"hash",status:"skip",message:"No integrity block present; hash verification skipped"};let{export_sha256:t,export_full_sha256:a}=n;if(!t&&!a)return{check:"hash",status:"skip",message:"No hashes in integrity block; hash verification skipped"};let r=[];if(t){let i=zx(e);if(i!==t)r.push(`export_sha256 mismatch: expected ${t}, computed ${i}`)}if(a){let i=Ux(e);if(i!==a)r.push(`export_full_sha256 mismatch: expected ${a}, computed ${i}`)}if(r.length===0)return{check:"hash",status:"pass",message:"All hashes verified successfully"};return{check:"hash",status:"fail",message:"Hash verification failed",details:r}}function TRe(e){try{let n=VY(XY(e));if(n.length===32)return{publicKeyBytes:new Uint8Array(n)};if(n.length===44||n.length===45){let t=Buffer.from(n.toString("utf8").trim(),"base64");if(t.length!==32)return{error:`Public key file has invalid size after base64 decode: ${t.length} bytes (expected 32)`};return{publicKeyBytes:new Uint8Array(t)}}return{error:`Public key file has invalid size: ${n.length} bytes (expected 32 raw or 44 base64)`}}catch(n){return{error:`Failed to read public key file: ${n instanceof Error?n.message:String(n)}`}}}async function ORe(e,n){let t;try{t=await fetch(e,{method:"GET",headers:{Accept:"application/json"}})}catch(d){return{error:`Failed to fetch keys URL: ${d instanceof Error?d.message:String(d)}`}}if(!t.ok)return{error:`Failed to fetch keys URL: HTTP ${t.status}`};let a;try{a=await t.json()}catch(d){return{error:`Failed to parse keys URL JSON: ${d instanceof Error?d.message:String(d)}`}}let r=a;if(!Array.isArray(r.keys))return{error:"Keys URL payload is invalid: expected { keys: [] }"};let o=r.keys.find((d)=>d.key_id===n);if(!o)return{error:`key_id "${n}" not found at ${e}`};if((typeof o.algorithm==="string"?o.algorithm.toLowerCase():"unknown")!=="ed25519")return{error:`Unsupported key algorithm "${String(o.algorithm)}" for key_id "${n}"`};let c=typeof o.public_key==="string"?o.public_key:typeof o.public_key_base64==="string"?o.public_key_base64:null;if(!c)return{error:`key_id "${n}" is missing public key material`};let A;try{A=Buffer.from(c.trim(),"base64")}catch{return{error:`key_id "${n}" has invalid base64 public key`}}if(A.length!==32)return{error:`key_id "${n}" public key has invalid length: ${A.length} bytes (expected 32)`};let l=typeof o.deprecated_at==="string"&&o.deprecated_at.trim().length>0?o.deprecated_at:null;return{publicKeyBytes:new Uint8Array(A),warning:l?`Key "${n}" is deprecated since ${l}`:void 0}}async function ZRe(e,n){let t=e.integrity;if(!t)return{check:"signature",status:"skip",message:"No integrity block present; signature verification skipped"};let a=t.signature;if(!a)return{check:"signature",status:"skip",message:"No signature in integrity block; signature verification skipped"};let r=t.export_sha256;if(!r)return{check:"signature",status:"fail",message:"Signature present but integrity.export_sha256 is missing; cannot verify"};let i,o;if(n.publicKey){let c=TRe(n.publicKey);if(c.error)return{check:"signature",status:"fail",message:c.error};i=c.publicKeyBytes}else if(n.keysUrl){let c=await ORe(n.keysUrl,a.key_id);if(c.error)return{check:"signature",status:"fail",message:c.error};i=c.publicKeyBytes,o=c.warning}else return{check:"signature",status:"skip",message:"Signature present but no --public-key or --keys-url provided; signature verification skipped"};if(!i)return{check:"signature",status:"fail",message:"Public key resolution failed"};let s=Hx(r,{alg:a.alg,key_id:a.key_id,sig:a.sig},{publicKey:i});if(s&&o)return{check:"signature",status:"warn",message:`Signature verified (key_id: ${a.key_id})`,details:[o]};if(s)return{check:"signature",status:"pass",message:`Signature verified (key_id: ${a.key_id})`};return{check:"signature",status:"fail",message:`Signature verification failed for key_id: ${a.key_id}`}}function JY(e){let n=[];n.push(`Verifying: ${e.file}`),n.push("");for(let t of e.checks){let a=t.status==="pass"?"PASS":t.status==="fail"?"FAIL":t.status==="warn"?"WARN":"SKIP";if(n.push(` [${a}] ${t.check}: ${t.message}`),t.details&&t.status!=="pass"){let r=Array.isArray(t.details)?t.details:[t.details];for(let i of r){let o=typeof i==="string"?i:JSON.stringify(i);n.push(` ${o}`)}}}return n.push(""),n.push(e.overall==="pass"?"Overall: PASS \u2014 all checks passed":`Overall: FAIL \u2014 exit code ${e.exit_code}`),n.join(`
|
|
697
|
+
Next cursor: ${i.body.next_cursor}`)}process.exit(O)}function m$e(e){let n={session:"",bodyMd:"",format:"json"},t=0;while(t<e.length){let a=e[t];if(a==="--session")n.session=e[t+1]||"",t+=2;else if(a.startsWith("--session="))n.session=a.slice(10),t++;else if(a==="--block-id")n.blockId=e[t+1]||"",t+=2;else if(a.startsWith("--block-id="))n.blockId=a.slice(11),t++;else if(a==="--body")n.bodyMd=e[t+1]||"",t+=2;else if(a.startsWith("--body="))n.bodyMd=a.slice(7),t++;else if(a==="--severity")n.severity=e[t+1]||"",t+=2;else if(a.startsWith("--severity="))n.severity=a.slice(11),t++;else if(a==="--idempotency-key")n.idempotencyKey=e[t+1]||"",t+=2;else if(a.startsWith("--idempotency-key="))n.idempotencyKey=a.slice(18),t++;else if(a==="--format")n.format=e[t+1]||"json",t+=2;else if(a.startsWith("--format="))n.format=a.slice(9),t++;else t++}return n}async function gH(e,n,t){let a=m$e(e);if(!a.session)N({code:"missing_required_flag",message:"Missing required flag: --session"},G);if(!a.bodyMd)N({code:"missing_required_flag",message:"Missing required flag: --body"},G);let r={body_md:a.bodyMd,source:"automation"};if(a.blockId)r.block_id=a.blockId;if(a.severity)r.severity=a.severity;let i={};if(a.idempotencyKey)i["Idempotency-Key"]=a.idempotencyKey;let o=await t.post(`/sessions/${encodeURIComponent(a.session)}/threads`,{body:r,headers:i});if(a.format==="json")console.log(JSON.stringify(o.body,null,2));else{let s=o.body;if(console.log(`Thread created: ${s.thread_id}`),console.log(`Status: ${s.status}`),s.severity)console.log(`Severity: ${s.severity}`);if(s.block_id)console.log(`Block: ${s.block_id}`);console.log(`Request ID: ${s.request_id}`)}process.exit(O)}function g$e(e){let n={session:"",thread:"",bodyMd:"",format:"json"},t=0;while(t<e.length){let a=e[t];if(a==="--session")n.session=e[t+1]||"",t+=2;else if(a.startsWith("--session="))n.session=a.slice(10),t++;else if(a==="--thread")n.thread=e[t+1]||"",t+=2;else if(a.startsWith("--thread="))n.thread=a.slice(9),t++;else if(a==="--body")n.bodyMd=e[t+1]||"",t+=2;else if(a.startsWith("--body="))n.bodyMd=a.slice(7),t++;else if(a==="--idempotency-key")n.idempotencyKey=e[t+1]||"",t+=2;else if(a.startsWith("--idempotency-key="))n.idempotencyKey=a.slice(18),t++;else if(a==="--format")n.format=e[t+1]||"json",t+=2;else if(a.startsWith("--format="))n.format=a.slice(9),t++;else t++}return n}async function bH(e,n,t){let a=g$e(e);if(!a.session)N({code:"missing_required_flag",message:"Missing required flag: --session"},G);if(!a.thread)N({code:"missing_required_flag",message:"Missing required flag: --thread"},G);if(!a.bodyMd)N({code:"missing_required_flag",message:"Missing required flag: --body"},G);let r={body_md:a.bodyMd,source:"automation"},i={};if(a.idempotencyKey)i["Idempotency-Key"]=a.idempotencyKey;let o=encodeURIComponent(a.session),s=encodeURIComponent(a.thread),c=await t.post(`/sessions/${o}/threads/${s}/comments`,{body:r,headers:i});if(a.format==="json")console.log(JSON.stringify(c.body,null,2));else{let A=c.body;console.log(`Comment posted: ${A.comment_id}`),console.log(`Thread: ${A.thread_id}`),console.log(`Request ID: ${A.request_id}`)}process.exit(O)}function b$e(e){let n={session:"",thread:"",action:"resolve",format:"json"},t=0;while(t<e.length){let a=e[t];if(a==="--session")n.session=e[t+1]||"",t+=2;else if(a.startsWith("--session="))n.session=a.slice(10),t++;else if(a==="--thread")n.thread=e[t+1]||"",t+=2;else if(a.startsWith("--thread="))n.thread=a.slice(9),t++;else if(a==="--action")n.action=e[t+1]||"resolve",t+=2;else if(a.startsWith("--action="))n.action=a.slice(9),t++;else if(a==="--disposition")n.disposition=e[t+1]||"",t+=2;else if(a.startsWith("--disposition="))n.disposition=a.slice(14),t++;else if(a==="--body")n.body=e[t+1]||"",t+=2;else if(a.startsWith("--body="))n.body=a.slice(7),t++;else if(a==="--if-match")n.ifMatch=e[t+1]||"",t+=2;else if(a.startsWith("--if-match="))n.ifMatch=a.slice(11),t++;else if(a==="--reopen")n.action="reopen",t++;else if(a==="--format")n.format=e[t+1]||"json",t+=2;else if(a.startsWith("--format="))n.format=a.slice(9),t++;else t++}return n}async function fH(e,n,t){let a=b$e(e);if(!a.session)N({code:"missing_required_flag",message:"Missing required flag: --session"},G);if(!a.thread)N({code:"missing_required_flag",message:"Missing required flag: --thread"},G);let r=encodeURIComponent(a.session),i=encodeURIComponent(a.thread),o=a.action==="reopen"?"reopen":"resolve",s={};if(a.disposition||a.body){let l={};if(a.disposition)l.state=a.disposition;if(a.body)l.rationale_md=a.body;s.disposition=l}let c={};if(a.ifMatch)c["If-Match"]=a.ifMatch;let A=await t.post(`/sessions/${r}/threads/${i}/${o}`,{body:s,headers:c});if(a.format==="json")console.log(JSON.stringify(A.body,null,2));else{let l=A.body,d=a.action==="reopen"?"Reopened":"Resolved";console.log(`${d} thread: ${l.thread_id}`),console.log(`Status: ${l.status}`),console.log(`Version: ${l.version}`),console.log(`Request ID: ${l.request_id}`)}process.exit(O)}function f$e(e){let n={session:"",thread:"",state:"",format:"json"},t=0;while(t<e.length){let a=e[t];if(a==="--session")n.session=e[t+1]||"",t+=2;else if(a.startsWith("--session="))n.session=a.slice(10),t++;else if(a==="--thread")n.thread=e[t+1]||"",t+=2;else if(a.startsWith("--thread="))n.thread=a.slice(9),t++;else if(a==="--state")n.state=e[t+1]||"",t+=2;else if(a.startsWith("--state="))n.state=a.slice(8),t++;else if(a==="--rationale")n.rationaleMd=e[t+1]||"",t+=2;else if(a.startsWith("--rationale="))n.rationaleMd=a.slice(12),t++;else if(a==="--format")n.format=e[t+1]||"json",t+=2;else if(a.startsWith("--format="))n.format=a.slice(9),t++;else t++}return n}async function hH(e,n,t){let a=f$e(e);if(!a.session)N({code:"missing_required_flag",message:"Missing required flag: --session"},G);if(!a.thread)N({code:"missing_required_flag",message:"Missing required flag: --thread"},G);if(!a.state)N({code:"missing_required_flag",message:"Missing required flag: --state"},G);let r={state:a.state};if(a.rationaleMd)r.rationale_md=a.rationaleMd;let i=encodeURIComponent(a.session),o=encodeURIComponent(a.thread),s=await t.post(`/sessions/${i}/threads/${o}/dispositions`,{body:r});if(a.format==="json")console.log(JSON.stringify(s.body,null,2));else{let c=s.body;console.log(`Disposition recorded: ${c.disposition_id}`),console.log(`Thread: ${c.thread_id}`),console.log(`State: ${c.state}`),console.log(`Request ID: ${c.request_id}`)}process.exit(O)}function h$e(e){let n={session:"",thread:"",type:"",format:"json"},t=0;while(t<e.length){let a=e[t];if(a==="--session")n.session=e[t+1]||"",t+=2;else if(a.startsWith("--session="))n.session=a.slice(10),t++;else if(a==="--thread")n.thread=e[t+1]||"",t+=2;else if(a.startsWith("--thread="))n.thread=a.slice(9),t++;else if(a==="--type")n.type=e[t+1]||"",t+=2;else if(a.startsWith("--type="))n.type=a.slice(7),t++;else if(a==="--commit-sha")n.commitSha=e[t+1]||"",t+=2;else if(a.startsWith("--commit-sha="))n.commitSha=a.slice(13),t++;else if(a==="--proposed-change-id")n.proposedChangeId=e[t+1]||"",t+=2;else if(a.startsWith("--proposed-change-id="))n.proposedChangeId=a.slice(21),t++;else if(a==="--pr-url")n.prUrl=e[t+1]||"",t+=2;else if(a.startsWith("--pr-url="))n.prUrl=a.slice(9),t++;else if(a==="--attestation")n.attestation=e[t+1]||"",t+=2;else if(a.startsWith("--attestation="))n.attestation=a.slice(14),t++;else if(a==="--format")n.format=e[t+1]||"json",t+=2;else if(a.startsWith("--format="))n.format=a.slice(9),t++;else t++}return n}async function yH(e,n,t){let a=h$e(e);if(!a.session)N({code:"missing_required_flag",message:"Missing required flag: --session"},G);if(!a.thread)N({code:"missing_required_flag",message:"Missing required flag: --thread"},G);if(!a.type)N({code:"missing_required_flag",message:"Missing required flag: --type"},G);let r={};if(a.commitSha)r.commit_sha=a.commitSha;if(a.proposedChangeId)r.proposed_change_id=a.proposedChangeId;if(a.prUrl)r.pr_url=a.prUrl;if(a.attestation)r.attestation=a.attestation;let i={evidence_type:a.type,evidence_json:r},o=encodeURIComponent(a.session),s=encodeURIComponent(a.thread),c=await t.post(`/sessions/${o}/threads/${s}/evidence`,{body:i});if(a.format==="json")console.log(JSON.stringify(c.body,null,2));else{let A=c.body;console.log(`Evidence attached: ${A.evidence_id}`),console.log(`Thread: ${A.thread_id}`),console.log(`Type: ${A.type}`),console.log(`Request ID: ${A.request_id}`)}process.exit(O)}var wH=["file","doc","pr","custom"],y$e=new Set(wH);function w$e(e){let n={sourceType:"",kind:"",key:"",headSessionId:"",format:"json"},t=0;while(t<e.length){let a=e[t];if(a==="--source-type")n.sourceType=e[t+1]||"",t+=2;else if(a.startsWith("--source-type="))n.sourceType=a.slice(14),t++;else if(a==="--repo-id")n.repoId=e[t+1]||"",t+=2;else if(a.startsWith("--repo-id="))n.repoId=a.slice(10),t++;else if(a==="--project-id")n.projectId=e[t+1]||"",t+=2;else if(a.startsWith("--project-id="))n.projectId=a.slice(13),t++;else if(a==="--kind")n.kind=e[t+1]||"",t+=2;else if(a.startsWith("--kind="))n.kind=a.slice(7),t++;else if(a==="--key")n.key=e[t+1]||"",t+=2;else if(a.startsWith("--key="))n.key=a.slice(6),t++;else if(a==="--head-session")n.headSessionId=e[t+1]||"",t+=2;else if(a.startsWith("--head-session="))n.headSessionId=a.slice(15),t++;else if(a==="--format")n.format=e[t+1]||"json",t+=2;else if(a.startsWith("--format="))n.format=a.slice(9),t++;else t++}return n}async function kH(e,n,t){let a=w$e(e);if(!a.sourceType)N({code:"missing_required_flag",message:"Missing required flag: --source-type"},G);if(!a.kind)N({code:"missing_required_flag",message:"Missing required flag: --kind"},G);if(!a.key)N({code:"missing_required_flag",message:"Missing required flag: --key"},G);if(!a.headSessionId)N({code:"missing_required_flag",message:"Missing required flag: --head-session"},G);let r=a.kind.trim().toLowerCase();if(!y$e.has(r))N({code:"invalid_flag_value",message:`Invalid --kind value: ${a.kind}. Must be one of: ${wH.join(", ")}`},G);let i={source_type:a.sourceType,kind:r,key:a.key,head_session_id:a.headSessionId};if(a.repoId)i.repo_id=a.repoId;if(a.projectId)i.project_id=a.projectId;let o=await t.post("/review-refs",{body:i});if(a.format==="json")console.log(JSON.stringify(o.body,null,2));else console.log(`Review ref created: ${o.body.id}`),console.log(`Head session: ${o.body.head_session_id??"none"}`),console.log(`Request ID: ${o.body.request_id}`);process.exit(O)}function k$e(e){let n={reviewRefId:"",format:"json"},t=0;while(t<e.length){let a=e[t];if(a==="--review-ref")n.reviewRefId=e[t+1]||"",t+=2;else if(a.startsWith("--review-ref="))n.reviewRefId=a.slice(13),t++;else if(a==="--format")n.format=e[t+1]||"json",t+=2;else if(a.startsWith("--format="))n.format=a.slice(9),t++;else t++}return n}async function BH(e,n,t){let a=k$e(e);if(!a.reviewRefId)N({code:"missing_required_flag",message:"Missing required flag: --review-ref"},G);let r=await t.get(`/review-refs/${encodeURIComponent(a.reviewRefId)}/resolve`);if(a.format==="json")console.log(JSON.stringify(r.body,null,2));else console.log(`Review ref: ${r.body.review_ref_id}`),console.log(`Head session: ${r.body.head_session_id}`),console.log(`State: ${r.body.state}`),console.log(`Request ID: ${r.body.request_id}`);process.exit(O)}function B$e(e){let n={reviewRefId:"",headSessionId:"",format:"json"},t=0;while(t<e.length){let a=e[t];if(a==="--review-ref")n.reviewRefId=e[t+1]||"",t+=2;else if(a.startsWith("--review-ref="))n.reviewRefId=a.slice(13),t++;else if(a==="--head-session")n.headSessionId=e[t+1]||"",t+=2;else if(a.startsWith("--head-session="))n.headSessionId=a.slice(15),t++;else if(a==="--expected-head")n.expectedHeadSessionId=e[t+1]||"",t+=2;else if(a.startsWith("--expected-head="))n.expectedHeadSessionId=a.slice(16),t++;else if(a==="--format")n.format=e[t+1]||"json",t+=2;else if(a.startsWith("--format="))n.format=a.slice(9),t++;else t++}return n}async function CH(e,n,t){let a=B$e(e);if(!a.reviewRefId)N({code:"missing_required_flag",message:"Missing required flag: --review-ref"},G);if(!a.headSessionId)N({code:"missing_required_flag",message:"Missing required flag: --head-session"},G);let r={head_session_id:a.headSessionId};if(a.expectedHeadSessionId)r.expected_head_session_id=a.expectedHeadSessionId;let i=await t.post(`/review-refs/${encodeURIComponent(a.reviewRefId)}/advance`,{body:r});if(a.format==="json")console.log(JSON.stringify(i.body,null,2));else console.log(`Advanced review ref: ${i.body.review_ref.id}`),console.log(`New head session: ${i.body.review_ref.head_session_id}`),console.log(`Request ID: ${i.body.request_id}`);process.exit(O)}function C$e(e){let n={session:"",approverEmails:[],format:"json"},t=0;while(t<e.length){let a=e[t];if(a==="--session")n.session=e[t+1]||"",t+=2;else if(a.startsWith("--session="))n.session=a.slice(10),t++;else if(a==="--approver"){if(e[t+1])n.approverEmails.push(e[t+1]);t+=2}else if(a.startsWith("--approver="))n.approverEmails.push(a.slice(11)),t++;else if(a==="--approvers"){if(e[t+1])n.approverEmails.push(...e[t+1].split(","));t+=2}else if(a.startsWith("--approvers="))n.approverEmails.push(...a.slice(12).split(",")),t++;else if(a==="--message")n.message=e[t+1]||"",t+=2;else if(a.startsWith("--message="))n.message=a.slice(10),t++;else if(a==="--idempotency-key")n.idempotencyKey=e[t+1]||"",t+=2;else if(a.startsWith("--idempotency-key="))n.idempotencyKey=a.slice(18),t++;else if(a==="--format")n.format=e[t+1]||"json",t+=2;else if(a.startsWith("--format="))n.format=a.slice(9),t++;else t++}return n}async function _H(e,n,t){let a=C$e(e);if(!a.session)N({code:"missing_required_flag",message:"Missing required flag: --session"},G);if(a.approverEmails.length===0)N({code:"missing_required_flag",message:"Missing required flag: --approver or --approvers"},G);let r={approver_emails:a.approverEmails};if(a.message)r.message=a.message;let i={};if(a.idempotencyKey)i["Idempotency-Key"]=a.idempotencyKey;let o=await t.post(`/sessions/${encodeURIComponent(a.session)}/request-approval`,{body:r,headers:i});if(a.format==="json")console.log(JSON.stringify(o.body,null,2));else{let s=o.body.approval_requests??[];console.log(`Approval requested (${s.length} approvers):`);for(let c of s)console.log(` ${c.id} ${c.approver_email} ${c.state}`);console.log(`Request ID: ${o.body.request_id}`)}process.exit(O)}var eK=Do(bY(),1),nK=Do(MY(),1);import{readFileSync as VY}from"fs";import{resolve as XY}from"path";var oRe=x.string().regex(/^[a-f0-9]{64}$/,{message:"Must be a 64-character lowercase hex SHA-256 digest"}),Jt=x.string().regex(/^sha256:[a-f0-9]{64}$/,{message:'Must be formatted as "sha256:<64 hex chars>"'}),GY=x.string().datetime(),RY=["export","render_receipt","lineage_diff","attestation","verification_instructions"],PY=x.object({path:x.string().min(1),sha256:Jt,type:x.enum(RY),view:x.string().optional()}),Rx=x.object({render_profile:x.string(),renderer_version:x.string(),sanitizer_version:x.string(),config_hash:Jt}),zY=x.object({enable_export_hash:x.boolean(),enable_export_signature:x.boolean(),sealed_render_of_record:x.boolean(),enable_merkle_roots:x.boolean()}),UY=x.object({alg:x.string(),key_id:x.string(),sig:x.string()}),sRe=x.object({session_id:x.string().min(1),render_artifact_sha256:Jt,render_sha256:Jt,sealed_at:GY,provenance:Rx}),cRe=x.object({bundle_version:x.literal("evidence.v1"),session_id:x.string().min(1),source_content_sha256:Jt,created_at:GY,integrity_settings:zY,renderer_provenance:Rx.optional(),contents:x.array(PY),bundle_sha256:Jt,signature:UY.optional()});var ARe=/^(?:[a-f0-9]{40}|[a-f0-9]{64})$/,HY=x.string().datetime();var lRe=x.enum(["git","upload"]),dRe=x.enum(["approved","rejected","conditional"]),uRe=x.record(x.string(),x.unknown()),TY=x.object({approval_id:x.string().min(1),decision:dRe,decided_by_participant_id:x.string().min(1),decided_by_display:x.string().min(1),decided_at:HY,conditions:x.array(uRe)}),pRe=x.object({schema_version:x.literal("attestation.v1"),session_id:x.string().min(1),source_type:lRe,source_content_sha256:Jt,source_blob_oid:x.string().regex(ARe,"source_blob_oid must be 40 or 64 lowercase hex chars").optional(),timestamp:HY,approvals:x.array(TY).min(1),export_sha256:Jt,blocks_merkle_root:Jt.optional(),threads_merkle_root:Jt.optional()}).superRefine((e,n)=>{if(e.source_type==="git"&&!e.source_blob_oid)n.addIssue({code:x.ZodIssueCode.custom,path:["source_blob_oid"],message:"source_blob_oid is required when source_type=git"});if(e.source_type!=="git"&&e.source_blob_oid)n.addIssue({code:x.ZodIssueCode.custom,path:["source_blob_oid"],message:"source_blob_oid is only allowed when source_type=git"});let t=e.blocks_merkle_root!==void 0,a=e.threads_merkle_root!==void 0;if(t!==a)n.addIssue({code:x.ZodIssueCode.custom,path:["blocks_merkle_root"],message:"blocks_merkle_root and threads_merkle_root must either both be set or both be omitted"})});var amn=Uint8Array.from([48,46,2,1,0,48,5,6,3,43,101,112,4,34,4,32]),rmn=Uint8Array.from([48,42,48,5,6,3,43,101,112,3,33,0]);import{createHash as mRe}from"crypto";var gRe=new Set(["integrity","exported_at","request_id","view_requested","view_resolved","partial","incomplete_sections"]),bRe=new Set(["statistics"]),fRe=new Set(["change_status","change_basis","block_key_derived"]),hRe=new Set(["classification"]);function ZY(e){return mRe("sha256").update(e,"utf8").digest("hex")}function Nn(e,n){if(e==null&&n==null)return 0;if(e==null)return 1;if(n==null)return-1;return e.localeCompare(n)}function yRe(e,n){if(e==null&&n==null)return 0;if(e==null)return 1;if(n==null)return-1;return e-n}function wRe(e){return[...e].sort((n,t)=>yRe(n.block_index,t.block_index))}function kRe(e){return[...e].sort((n,t)=>Nn(n.thread_id,t.thread_id))}function BRe(e){return[...e].sort((n,t)=>Nn(n.comment_id,t.comment_id))}function CRe(e){return[...e].sort((n,t)=>{let a=Nn(n.provider,t.provider);if(a!==0)return a;if(a=Nn(n.external_id,t.external_id),a!==0)return a;return Nn(n.url,t.url)})}function _Re(e){return[...e].sort()}function ERe(e){return[...e].sort((n,t)=>{let a=Nn(n.ref_id,t.ref_id);if(a!==0)return a;let r=OY(n),i=OY(t);for(let o=0;o<r.length;o++){let s=Nn(r[o],i[o]);if(s!==0)return s}return 0})}function OY(e){let n=e.target??{},t=n.anchor??{};return[e.purpose??null,n.source_type??null,n.file_path??null,n.doc_key??null,t.type??null,t.block_id??null]}function vRe(e){return[...e].sort()}function QRe(e){return[...e].sort((n,t)=>{let a=Nn(n.emoji,t.emoji);if(a!==0)return a;let r=n.reactor??{},i=t.reactor??{};if(a=Nn(r.participant_id,i.participant_id),a!==0)return a;if(a=Nn(r.email,i.email),a!==0)return a;return Nn(n.created_at,t.created_at)})}function xRe(e){return[...e].sort((n,t)=>Nn(n.request_id,t.request_id))}function IRe(e){return[...e].sort((n,t)=>Nn(n.approval_id,t.approval_id))}function DRe(e){return[...e].sort((n,t)=>Nn(n.proposed_change_id,t.proposed_change_id))}function FRe(e){return[...e].sort((n,t)=>{let a=Nn(n.kind,t.kind);if(a!==0)return a;if(a=Nn(n.require_verification_tier,t.require_verification_tier),a!==0)return a;if(a=Nn(n.description,t.description),a!==0)return a;let r=Array.isArray(n.thread_ids)?[...n.thread_ids].sort().join(","):"",i=Array.isArray(t.thread_ids)?[...t.thread_ids].sort().join(","):"";if(a=r.localeCompare(i),a!==0)return a;let o=Array.isArray(n.check_rule_ids)?[...n.check_rule_ids].sort().join(","):"",s=Array.isArray(t.check_rule_ids)?[...t.check_rule_ids].sort().join(","):"";return o.localeCompare(s)})}function $Re(e){let n={...e};if(Array.isArray(n.mentions))n.mentions=vRe(n.mentions);if(Array.isArray(n.reactions))n.reactions=QRe(n.reactions);return n}function SRe(e){let n={...e};if(Array.isArray(n.comments))n.comments=BRe(n.comments).map((t)=>$Re(t));if(Array.isArray(n.links))n.links=CRe(n.links);if(Array.isArray(n.tags))n.tags=_Re(n.tags);if(Array.isArray(n.references))n.references=ERe(n.references);return n}function LRe(e){let n={...e};if(Array.isArray(n.conditions))n.conditions=FRe(n.conditions).map((t)=>{let a={...t};if(Array.isArray(a.thread_ids))a.thread_ids=[...a.thread_ids].sort();if(Array.isArray(a.check_rule_ids))a.check_rule_ids=[...a.check_rule_ids].sort();return a});return n}function Px(e,n){let t={};for(let[a,r]of Object.entries(e)){if(gRe.has(a))continue;if(!n.includeNonAuthoritative&&bRe.has(a))continue;t[a]=r}if(Array.isArray(t.blocks)){let a=wRe(t.blocks);if(!n.includeNonAuthoritative)a=a.map((r)=>{let i={};for(let[o,s]of Object.entries(r))if(!fRe.has(o))i[o]=s;return i});t.blocks=a}if(Array.isArray(t.threads)){let a=kRe(t.threads);a=a.map((r)=>{let i=SRe(r);if(!n.includeNonAuthoritative){let o={};for(let[s,c]of Object.entries(i))if(!hRe.has(s))o[s]=c;i=o}return i}),t.threads=a}if(Array.isArray(t.approval_requests))t.approval_requests=xRe(t.approval_requests);if(Array.isArray(t.approvals))t.approvals=IRe(t.approvals).map((a)=>LRe(a));if(Array.isArray(t.proposed_changes))t.proposed_changes=DRe(t.proposed_changes);if(Array.isArray(t.participants)){let a=t.participants;t.participants=[...a].sort((r,i)=>Nn(r.id,i.id))}if(t.extensions&&typeof t.extensions==="object"&&!Array.isArray(t.extensions)){let a=t.extensions,r={};for(let[i,o]of Object.entries(a))if(o&&typeof o==="object"&&!Array.isArray(o)&&(n.includeNonAuthoritative||o.authoritative===!0))r[i]=o;if(Object.keys(r).length>0)t.extensions=r;else delete t.extensions}return t}function zx(e){let n=Px(e,{includeNonAuthoritative:!1});return ZY(Os(n))}function Ux(e){let n=Px(e,{includeNonAuthoritative:!0});return ZY(Os(n))}import{sign as lmn,verify as jRe,createPublicKey as qRe,createPrivateKey as dmn}from"crypto";function NRe(e){let n=Uint8Array.from([48,42,48,5,6,3,43,101,112,3,33,0]),t=new Uint8Array(n.length+e.length);return t.set(n,0),t.set(e,n.length),Buffer.from(t)}function Hx(e,n,t){if(n.alg!=="ed25519")return!1;if(t.publicKey.length!==32)return!1;try{let a=NRe(t.publicKey),r=qRe({key:a,format:"der",type:"spki"}),i=Uint8Array.from(Buffer.from(n.sig,"base64"));return jRe(null,new TextEncoder().encode(e),r,i)}catch{return!1}}var YY={$schema:"https://json-schema.org/draft/2020-12/schema",$id:"https://typescape.ai/schemas/export.v1.schema.json",title:"Typescape Export v1",$comment:"Non-enforceable invariants: (1) threads[].block_id must reference blocks[].block_id when anchor.type is block/range; (2) blocks must be sorted by block_index ascending; (3) threads must be sorted by thread_id for hash stability; (4) non-authoritative extensions (authoritative=false) are excluded from integrity.export_sha256; (5) breaking changes require new v2 artifacts and MUST NOT semantically drift v1 files in place.",type:"object",additionalProperties:!1,required:["schema_version","exported_at","view_requested","view_resolved","session","blocks","threads","synthesis"],properties:{schema_version:{const:"v1"},exported_at:{type:"string",format:"date-time"},view_requested:{type:["string","null"]},view_resolved:{type:"string",minLength:1},integrity:{type:"object",additionalProperties:!1,properties:{canonicalization:{type:"string"},export_sha256:{$ref:"#/$defs/sha256"},export_full_sha256:{$ref:"#/$defs/sha256"},signature:{type:"object",additionalProperties:!1,required:["alg","key_id","sig"],properties:{alg:{type:"string",minLength:1},key_id:{type:"string",minLength:1},sig:{type:"string",minLength:1}}},blocks_merkle_root:{$ref:"#/$defs/sha256"},threads_merkle_root:{$ref:"#/$defs/sha256"}}},rendering:{type:"object",additionalProperties:!1,properties:{include_render_html:{type:"boolean"},html_csp:{type:"string"}}},session:{type:"object",additionalProperties:!1,required:["id","source_type","file_path","source_content_sha256","state","block_id_scheme","block_key_scheme","created_at"],properties:{id:{type:"string",minLength:1},source_type:{type:"string",enum:["git","upload"]},repo_id:{type:["string","null"],minLength:1},git_sha:{anyOf:[{$ref:"#/$defs/gitSha"},{type:"null"}]},project_id:{type:"string",minLength:1},upload_batch_id:{type:"string",minLength:1},file_path:{$ref:"#/$defs/filePath"},doc_key:{type:["string","null"],minLength:1},corpus_snapshot_id:{type:["string","null"],minLength:1},source_context:{type:["object","null"],additionalProperties:!0},extra:{},root_session_id:{type:"string",minLength:1},supersedes_session_id:{type:"string",minLength:1},source_blob_oid:{type:["string","null"],minLength:1},source_content_sha256:{$ref:"#/$defs/sha256"},source_size_bytes:{type:"integer",minimum:0},title:{type:"string"},state:{type:"string",enum:["active","closed","archived"]},block_id_scheme:{type:"string",minLength:1},block_key_scheme:{type:"string",minLength:1},created_at:{type:"string",format:"date-time"},billable_at:{type:["string","null"],format:"date-time"}},allOf:[{if:{properties:{source_type:{const:"git"}},required:["source_type"]},then:{required:["repo_id","git_sha"],properties:{repo_id:{type:"string",minLength:1},git_sha:{$ref:"#/$defs/gitSha"}}}},{if:{properties:{source_type:{const:"upload"}},required:["source_type"]},then:{required:["project_id","upload_batch_id"],properties:{project_id:{type:"string",minLength:1},upload_batch_id:{type:"string",minLength:1}}}}]},blocks:{type:"array",items:{type:"object",additionalProperties:!1,required:["block_id","block_index","block_type","start_line","end_line"],properties:{block_id:{type:"string",minLength:1},block_key:{type:["string","null"],minLength:1},block_key_source:{type:["string","null"],enum:["marker","sidecar",null]},block_key_derived:{type:["object","null"],additionalProperties:!0},block_index:{type:"integer",minimum:0},block_type:{type:"string",enum:["heading","paragraph","code_block","table","thematic_break","html","blockquote","list_item","image"]},start_line:{type:"integer",minimum:1},end_line:{type:"integer",minimum:1},plaintext:{type:"string"},change_status:{type:["string","null"],enum:["unchanged","modified","added","removed","moved",null]},change_basis:{type:["string","null"],enum:["block_key","fingerprint_ui_only","none",null]}}}},participants:{type:"array",items:{type:"object",additionalProperties:!1,required:["id","email","roles","created_at"],properties:{id:{type:"string",minLength:1},email:{type:"string",minLength:1},roles:{type:"array",items:{type:"string",minLength:1}},delegated_from_participant_id:{type:["string","null"],minLength:1},created_at:{type:"string",format:"date-time"}}}},threads:{type:"array",items:{type:"object",additionalProperties:!1,required:["thread_id","anchor","status","thread_type","source","severity","created_at","comments"],properties:{thread_id:{type:"string",minLength:1},block_id:{type:["string","null"],minLength:1},anchor:{type:"object",additionalProperties:!1,required:["type"],properties:{type:{type:"string",enum:["block","range","session"]},start_offset:{type:"integer",minimum:0},end_offset:{type:"integer",minimum:0}}},references:{type:"array",items:{$ref:"#/$defs/anchorRef"}},duplicate_of_thread_id:{type:"string",minLength:1},status:{type:"string",enum:["open","resolved","draft"]},thread_type:{type:"string",enum:["human","system_finding","intake"]},source:{type:"string",enum:["human","system","automation"]},finding_id:{type:"string",minLength:1},rule_id:{type:"string",minLength:1},rule_fingerprint:{type:"string",minLength:1},check_run_id:{type:"string",minLength:1},severity:{type:"string",enum:["suggestion","needs_changes","blocking"]},tags:{type:"array",items:{type:"string",minLength:1}},classification:{type:"object",required:["non_authoritative"],properties:{non_authoritative:{const:!0}},additionalProperties:!0},assignee:{type:"string",minLength:1},block_snapshot:{type:"object",additionalProperties:!1,required:["plaintext","hash"],properties:{plaintext:{type:"string"},hash:{$ref:"#/$defs/sha256"}}},created_at:{type:"string",format:"date-time"},comments:{type:"array",items:{$ref:"#/$defs/comment"}},links:{type:"array",items:{type:"object",additionalProperties:!1,required:["link_type","provider","url"],properties:{link_type:{type:"string",minLength:1},provider:{type:"string",minLength:1},url:{type:"string",format:"uri"},external_id:{type:"string",minLength:1}}}}},allOf:[{if:{properties:{anchor:{type:"object",properties:{type:{const:"session"}},required:["type"]}},required:["anchor"]},then:{properties:{block_id:{type:"null"}}}},{if:{properties:{anchor:{type:"object",properties:{type:{const:"block"}},required:["type"]}},required:["anchor"]},then:{required:["block_id"],properties:{block_id:{type:"string",minLength:1}}}},{if:{properties:{anchor:{type:"object",properties:{type:{const:"range"}},required:["type"]}},required:["anchor"]},then:{required:["block_id"],properties:{block_id:{type:"string",minLength:1},anchor:{type:"object",additionalProperties:!1,required:["type","start_offset","end_offset"],properties:{type:{const:"range"},start_offset:{type:"integer",minimum:0},end_offset:{type:"integer",minimum:0}}}}}}]}},synthesis:{type:"object",additionalProperties:!1,required:["blocking","needs_changes","suggestions","resolved","summary"],properties:{blocking:{type:"array",items:{$ref:"#/$defs/synthesisItem"}},needs_changes:{type:"array",items:{$ref:"#/$defs/synthesisItem"}},suggestions:{type:"array",items:{$ref:"#/$defs/synthesisItem"}},resolved:{type:"array",items:{$ref:"#/$defs/synthesisItem"}},summary:{$ref:"#/$defs/synthesisSummary"}}},reconciliation_prompt:{type:"string"},round_history:{type:"array",items:{type:"object",additionalProperties:!1,required:["round","session_id","state"],properties:{round:{type:"integer",minimum:1},session_id:{type:"string",minLength:1},created_at:{type:["string","null"],format:"date-time"},title:{type:["string","null"]},state:{type:"string",minLength:1},changes_summary:{type:["string","null"]}}}},issues:{type:"array",items:{type:"object",additionalProperties:!1,required:["issue_id","title","status","source","anchors","created_at"],properties:{issue_id:{type:"string",minLength:1},title:{type:"string",minLength:1},status:{type:"string",enum:["open","in_progress","resolved","archived"]},source:{type:"string",minLength:1},tags:{type:"array",items:{type:"string",minLength:1}},anchors:{type:"array",minItems:1,items:{$ref:"#/$defs/anchorRef"}},created_at:{type:"string",format:"date-time"},updated_at:{type:"string",format:"date-time"}}}},approval_requests:{type:"array",items:{type:"object",additionalProperties:!1,required:["request_id","requested_from","role","status"],properties:{request_id:{type:"string",minLength:1},requested_from:{type:"string",minLength:1},role:{type:"string",minLength:1},status:{type:"string",minLength:1},deadline_at:{type:"string",format:"date-time"},responded_at:{type:"string",format:"date-time"}}}},approvals:{type:"array",items:{type:"object",additionalProperties:!1,required:["approval_id","participant_id","decision","decided_by","decided_at"],properties:{approval_id:{type:"string",minLength:1},participant_id:{type:"string",minLength:1},decision:{type:"string",enum:["approve","reject","conditional"]},decided_by:{type:"string",minLength:1},decided_at:{type:"string",format:"date-time"},comment_md:{type:"string"},conditions:{type:"array",items:{type:"object",additionalProperties:!1,required:["condition_id","kind","description"],properties:{condition_id:{type:"string",minLength:1},kind:{type:"string",minLength:1},description:{type:"string",minLength:1},thread_ids:{type:"array",items:{type:"string",minLength:1}},require_verification_tier:{type:"string",minLength:1}}}}}}},acknowledgements:{type:"array",items:{type:"object",additionalProperties:!1,required:["block_id","participant_id","ack_type","created_at"],properties:{block_id:{type:"string",minLength:1},participant_id:{type:"string",minLength:1},participant_display:{type:"string",minLength:1},ack_type:{type:"string",enum:["read","confirmed"]},created_at:{type:"string",format:"date-time"}}}},policy_status:{type:"object",additionalProperties:!1,required:["verdict","reasons"],properties:{verdict:{type:"string",enum:["pass","fail","warn"]},reasons:{type:"array",items:{type:"object",additionalProperties:!1,required:["code"],properties:{code:{type:"string",minLength:1},details:{type:"object",additionalProperties:!0},thread_ids:{type:"array",items:{type:"string",minLength:1}},approval_ids:{type:"array",items:{type:"string",minLength:1}}}}}}},proposed_changes:{type:"array",items:{type:"object",additionalProperties:!1,required:["proposed_change_id","source_thread_ids","target","expected_source_content_sha256","patch_sha256","state","created_at"],properties:{proposed_change_id:{type:"string",minLength:1},source_thread_ids:{type:"array",minItems:1,items:{type:"string",minLength:1}},target:{$ref:"#/$defs/contentRef"},expected_source_content_sha256:{$ref:"#/$defs/sha256"},patch_sha256:{$ref:"#/$defs/sha256"},state:{type:"string",enum:["proposed","applied","failed","superseded"]},applied_commit_sha:{$ref:"#/$defs/gitSha"},applied_pr_url:{type:"string",format:"uri"},applied_upload_batch_id:{type:"string",minLength:1},applied_file_content_sha256:{$ref:"#/$defs/sha256"},created_at:{type:"string",format:"date-time"}}}},attestation:{type:"object",additionalProperties:!1,required:["attestation_id","schema_version","payload_sha256","signature"],properties:{attestation_id:{type:"string",minLength:1},schema_version:{const:"attestation.v1"},payload_sha256:{$ref:"#/$defs/sha256"},signature:{type:"object",additionalProperties:!1,required:["alg","key_id","sig"],properties:{alg:{type:"string",minLength:1},key_id:{type:"string",minLength:1},sig:{type:"string",minLength:1}}}}},extensions:{type:"object",propertyNames:{type:"string",pattern:"^[a-z][a-z0-9_.-]*$"},additionalProperties:{type:"object",required:["schema_version","authoritative"],properties:{schema_version:{type:"string",pattern:"^[a-z][a-z0-9_.-]*\\.v[0-9]+$"},authoritative:{type:"boolean"}},additionalProperties:!0}},statistics:{type:"object",additionalProperties:!1,properties:{total_threads:{type:"integer",minimum:0},open_threads:{type:"integer",minimum:0},resolved_threads:{type:"integer",minimum:0},total_comments:{type:"integer",minimum:0},unique_commenters:{type:"integer",minimum:0},suggestions_total:{type:"integer",minimum:0},suggestions_accepted:{type:"integer",minimum:0}}},request_id:{type:"string",minLength:1}},$defs:{gitSha:{type:"string",pattern:"^(?:[0-9a-f]{40}|[0-9a-f]{64})$"},sha256:{type:"string",pattern:"^[0-9a-f]{64}$"},filePath:{type:"string",minLength:1,allOf:[{pattern:"^(?!/).+"},{not:{pattern:"(^|/)\\.\\.(?:/|$)"}},{pattern:"^[^\\u0000]+$"}]},anchorRef:{type:"object",additionalProperties:!1,required:["schema_version","source_type","file_path","anchor"],properties:{schema_version:{const:"anchor_ref.v1"},source_type:{type:"string",enum:["git","upload"]},repo_id:{type:"string",minLength:1},git_sha:{$ref:"#/$defs/gitSha"},project_id:{type:"string",minLength:1},upload_batch_id:{type:"string",minLength:1},file_path:{$ref:"#/$defs/filePath"},doc_key:{type:"string",minLength:1},anchor:{type:"object",additionalProperties:!1,required:["type"],properties:{type:{type:"string",enum:["block","range","session"]},block_id:{type:"string",minLength:1},range:{type:"object",additionalProperties:!1,required:["start_offset","end_offset"],properties:{start_offset:{type:"integer",minimum:0},end_offset:{type:"integer",minimum:0}}}},allOf:[{if:{properties:{type:{const:"block"}},required:["type"]},then:{required:["block_id"],properties:{block_id:{type:"string",minLength:1}}}},{if:{properties:{type:{const:"range"}},required:["type"]},then:{required:["block_id","range"],properties:{block_id:{type:"string",minLength:1},range:{type:"object",additionalProperties:!1,required:["start_offset","end_offset"],properties:{start_offset:{type:"integer",minimum:0},end_offset:{type:"integer",minimum:0}}}}}},{if:{properties:{type:{const:"session"}},required:["type"]},then:{not:{anyOf:[{required:["block_id"]},{required:["range"]}]}}}]},non_authoritative:{type:"boolean"}},allOf:[{if:{properties:{source_type:{const:"git"}},required:["source_type"]},then:{required:["repo_id","git_sha"],properties:{repo_id:{type:"string",minLength:1},git_sha:{$ref:"#/$defs/gitSha"}}}},{if:{properties:{source_type:{const:"upload"}},required:["source_type"]},then:{required:["project_id","upload_batch_id"],properties:{project_id:{type:"string",minLength:1},upload_batch_id:{type:"string",minLength:1}}}}]},contentRef:{type:"object",additionalProperties:!1,required:["source_type","file_path"],properties:{source_type:{type:"string",enum:["git","upload"]},repo_id:{type:"string",minLength:1},git_sha:{$ref:"#/$defs/gitSha"},project_id:{type:"string",minLength:1},upload_batch_id:{type:"string",minLength:1},file_path:{$ref:"#/$defs/filePath"}},allOf:[{if:{properties:{source_type:{const:"git"}},required:["source_type"]},then:{required:["repo_id","git_sha"],properties:{repo_id:{type:"string",minLength:1},git_sha:{$ref:"#/$defs/gitSha"}}}},{if:{properties:{source_type:{const:"upload"}},required:["source_type"]},then:{required:["project_id","upload_batch_id"],properties:{project_id:{type:"string",minLength:1},upload_batch_id:{type:"string",minLength:1}}}}]},synthesisItem:{type:"object",additionalProperties:!1,required:["thread_id","block_id","first_comment","status"],properties:{thread_id:{type:"string",minLength:1},block_id:{type:["string","null"],minLength:1},first_comment:{type:"string"},status:{type:"string",enum:["open","resolved","wont_fix"]}}},synthesisSummary:{type:"object",additionalProperties:!1,required:["total_threads","open_blocking","open_needs_changes","open_suggestions","resolved"],properties:{total_threads:{type:"integer",minimum:0},open_blocking:{type:"integer",minimum:0},open_needs_changes:{type:"integer",minimum:0},open_suggestions:{type:"integer",minimum:0},resolved:{type:"integer",minimum:0}}},comment:{type:"object",additionalProperties:!1,required:["comment_id","author","created_at","body_md","author_source"],properties:{comment_id:{type:"string",minLength:1},author:{type:"object",additionalProperties:!1,properties:{display:{type:"string"},email:{type:"string",format:"email"}}},created_at:{type:"string",format:"date-time"},edited_at:{type:"string",format:"date-time"},body_md:{type:"string",minLength:1},redacted:{type:"boolean"},redacted_at:{type:"string",format:"date-time"},redaction_reason_code:{type:"string",minLength:1},author_source:{type:"string",minLength:1},mentions:{type:"array",items:{type:"string",minLength:1}},reactions:{type:"array",items:{type:"string",minLength:1}},suggestion:{type:"object",additionalProperties:!0},suggestion_state:{type:"string",minLength:1},edit_history:{type:"array",items:{type:"object",additionalProperties:!1,required:["edited_at","editor_source","body_md"],properties:{edited_at:{type:"string",format:"date-time"},editor_source:{type:"string",minLength:1},body_md:{type:"string",minLength:1}}}}}}}};var hc=0,KY=1,GRe=2,RRe=3,WY=4,Tx=5;function PRe(e){let n={file:"",strict:!1,format:"text"},t=0;while(t<e.length){let a=e[t];if(a==="--public-key")n.publicKey=e[t+1],t+=2;else if(a.startsWith("--public-key="))n.publicKey=a.slice(13),t++;else if(a==="--keys-url")n.keysUrl=e[t+1],t+=2;else if(a.startsWith("--keys-url="))n.keysUrl=a.slice(11),t++;else if(a==="--strict")n.strict=!0,t++;else if(a==="--format")n.format=e[t+1]||"text",t+=2;else if(a.startsWith("--format="))n.format=a.slice(9),t++;else if(a==="--json")n.format="json",t++;else if(!a.startsWith("-")&&!n.file)n.file=a,t++;else t++}return n}function zRe(e,n){let t=new eK.default({allErrors:!0,strict:!1});nK.default(t);let a=t.compile(n);if(a(e))return{check:"schema",status:"pass",message:"Export matches export.v1 schema"};let i=(a.errors??[]).map((o)=>({path:o.instancePath||"/",keyword:o.keyword,message:o.message,params:o.params}));return{check:"schema",status:"fail",message:`Schema validation failed: ${i.length} error(s)`,details:i}}function URe(e){let n=[],t=e.blocks??[],a=e.threads??[],r=e.session??{},i=new Set(t.map((o)=>o.block_id));for(let o=1;o<t.length;o++){let s=t[o-1].block_index,c=t[o].block_index;if(c<s)n.push(`blocks[${o}].block_index (${c}) < blocks[${o-1}].block_index (${s}): not ascending`)}for(let o=0;o<a.length;o++){let s=a[o],c=s.anchor??{},A=c.type,l=s.block_id??c.block_id;if(A==="block"||A==="range"){if(!l)n.push(`threads[${o}] (${s.thread_id}): anchor.type="${A}" but block_id is null/missing`);else if(!i.has(l))n.push(`threads[${o}] (${s.thread_id}): block_id="${l}" not found in blocks[]`)}if(A==="session"&&l)n.push(`threads[${o}] (${s.thread_id}): anchor.type="session" but block_id is non-null`)}if(!r.source_content_sha256)n.push("session.source_content_sha256 is missing or null");if(n.length===0)return{check:"anchors",status:"pass",message:"All anchor invariants satisfied"};return{check:"anchors",status:"fail",message:`${n.length} anchor invariant violation(s)`,details:n}}function HRe(e){let n=e.integrity;if(!n)return{check:"hash",status:"skip",message:"No integrity block present; hash verification skipped"};let{export_sha256:t,export_full_sha256:a}=n;if(!t&&!a)return{check:"hash",status:"skip",message:"No hashes in integrity block; hash verification skipped"};let r=[];if(t){let i=zx(e);if(i!==t)r.push(`export_sha256 mismatch: expected ${t}, computed ${i}`)}if(a){let i=Ux(e);if(i!==a)r.push(`export_full_sha256 mismatch: expected ${a}, computed ${i}`)}if(r.length===0)return{check:"hash",status:"pass",message:"All hashes verified successfully"};return{check:"hash",status:"fail",message:"Hash verification failed",details:r}}function TRe(e){try{let n=VY(XY(e));if(n.length===32)return{publicKeyBytes:new Uint8Array(n)};if(n.length===44||n.length===45){let t=Buffer.from(n.toString("utf8").trim(),"base64");if(t.length!==32)return{error:`Public key file has invalid size after base64 decode: ${t.length} bytes (expected 32)`};return{publicKeyBytes:new Uint8Array(t)}}return{error:`Public key file has invalid size: ${n.length} bytes (expected 32 raw or 44 base64)`}}catch(n){return{error:`Failed to read public key file: ${n instanceof Error?n.message:String(n)}`}}}async function ORe(e,n){let t;try{t=await fetch(e,{method:"GET",headers:{Accept:"application/json"}})}catch(d){return{error:`Failed to fetch keys URL: ${d instanceof Error?d.message:String(d)}`}}if(!t.ok)return{error:`Failed to fetch keys URL: HTTP ${t.status}`};let a;try{a=await t.json()}catch(d){return{error:`Failed to parse keys URL JSON: ${d instanceof Error?d.message:String(d)}`}}let r=a;if(!Array.isArray(r.keys))return{error:"Keys URL payload is invalid: expected { keys: [] }"};let o=r.keys.find((d)=>d.key_id===n);if(!o)return{error:`key_id "${n}" not found at ${e}`};if((typeof o.algorithm==="string"?o.algorithm.toLowerCase():"unknown")!=="ed25519")return{error:`Unsupported key algorithm "${String(o.algorithm)}" for key_id "${n}"`};let c=typeof o.public_key==="string"?o.public_key:typeof o.public_key_base64==="string"?o.public_key_base64:null;if(!c)return{error:`key_id "${n}" is missing public key material`};let A;try{A=Buffer.from(c.trim(),"base64")}catch{return{error:`key_id "${n}" has invalid base64 public key`}}if(A.length!==32)return{error:`key_id "${n}" public key has invalid length: ${A.length} bytes (expected 32)`};let l=typeof o.deprecated_at==="string"&&o.deprecated_at.trim().length>0?o.deprecated_at:null;return{publicKeyBytes:new Uint8Array(A),warning:l?`Key "${n}" is deprecated since ${l}`:void 0}}async function ZRe(e,n){let t=e.integrity;if(!t)return{check:"signature",status:"skip",message:"No integrity block present; signature verification skipped"};let a=t.signature;if(!a)return{check:"signature",status:"skip",message:"No signature in integrity block; signature verification skipped"};let r=t.export_sha256;if(!r)return{check:"signature",status:"fail",message:"Signature present but integrity.export_sha256 is missing; cannot verify"};let i,o;if(n.publicKey){let c=TRe(n.publicKey);if(c.error)return{check:"signature",status:"fail",message:c.error};i=c.publicKeyBytes}else if(n.keysUrl){let c=await ORe(n.keysUrl,a.key_id);if(c.error)return{check:"signature",status:"fail",message:c.error};i=c.publicKeyBytes,o=c.warning}else return{check:"signature",status:"skip",message:"Signature present but no --public-key or --keys-url provided; signature verification skipped"};if(!i)return{check:"signature",status:"fail",message:"Public key resolution failed"};let s=Hx(r,{alg:a.alg,key_id:a.key_id,sig:a.sig},{publicKey:i});if(s&&o)return{check:"signature",status:"warn",message:`Signature verified (key_id: ${a.key_id})`,details:[o]};if(s)return{check:"signature",status:"pass",message:`Signature verified (key_id: ${a.key_id})`};return{check:"signature",status:"fail",message:`Signature verification failed for key_id: ${a.key_id}`}}function JY(e){let n=[];n.push(`Verifying: ${e.file}`),n.push("");for(let t of e.checks){let a=t.status==="pass"?"PASS":t.status==="fail"?"FAIL":t.status==="warn"?"WARN":"SKIP";if(n.push(` [${a}] ${t.check}: ${t.message}`),t.details&&t.status!=="pass"){let r=Array.isArray(t.details)?t.details:[t.details];for(let i of r){let o=typeof i==="string"?i:JSON.stringify(i);n.push(` ${o}`)}}}return n.push(""),n.push(e.overall==="pass"?"Overall: PASS \u2014 all checks passed":`Overall: FAIL \u2014 exit code ${e.exit_code}`),n.join(`
|
|
698
698
|
`)}async function tK(e){let n=PRe(e);if(!n.file)console.error(JSON.stringify({error:{code:"missing_file",message:"Usage: typescape verify export <file.json> [options]"}})),process.exit(Tx);let t;try{let d=VY(XY(n.file),"utf8");t=JSON.parse(d)}catch(d){let u={file:n.file,checks:[{check:"read",status:"fail",message:`Failed to read/parse file: ${d instanceof Error?d.message:String(d)}`}],overall:"fail",exit_code:Tx};if(n.format==="json")console.log(JSON.stringify(u,null,2));else console.log(JY(u));process.exit(Tx)}let a=YY,r=[],i=hc,o=zRe(t,a);if(r.push(o),o.status==="fail")i=KY;let s=URe(t);if(r.push(s),s.status==="fail"&&i===hc)i=GRe;let c=HRe(t);if(r.push(c),c.status==="fail"&&i===hc)i=RRe;let A=await ZRe(t,n);if(r.push(A),A.status==="fail"&&i===hc)i=WY;if(n.strict){for(let d of r)if(d.status==="warn"&&i===hc)i=d.check==="signature"?WY:KY}let l={file:n.file,checks:r,overall:i===hc?"pass":"fail",exit_code:i};if(n.format==="json")console.log(JSON.stringify(l,null,2));else console.log(JY(l));process.exit(i)}var aK=["wholesale","targeted","incremental"],rK=["anthropic","openai","custom"];function YRe(e){let n={sessionId:"",dryRun:!1,diff:!0,noCommit:!1,noSupersede:!1,yes:!1,quiet:!1,format:"json"},t=0;while(t<e.length){let a=e[t];if(a==="--profile")n.profile=e[t+1]||"",t+=2;else if(a.startsWith("--profile="))n.profile=a.slice(10),t++;else if(a==="--provider")n.provider=e[t+1],t+=2;else if(a.startsWith("--provider="))n.provider=a.slice(11),t++;else if(a==="--model")n.model=e[t+1]||"",t+=2;else if(a.startsWith("--model="))n.model=a.slice(8),t++;else if(a==="--temperature"){let r=e[t+1],i=Number(r);if(!Number.isFinite(i)||i<0||i>2)N({code:"validation_error",message:"Temperature must be between 0.0 and 2.0"},G);n.temperature=i,t+=2}else if(a.startsWith("--temperature=")){let r=a.slice(14),i=Number(r);if(!Number.isFinite(i)||i<0||i>2)N({code:"validation_error",message:"Temperature must be between 0.0 and 2.0"},G);n.temperature=i,t++}else if(a==="--strategy")n.strategy=e[t+1],t+=2;else if(a.startsWith("--strategy="))n.strategy=a.slice(11),t++;else if(a==="--dry-run")n.dryRun=!0,t++;else if(a==="--no-diff")n.diff=!1,t++;else if(a==="--diff")n.diff=!0,t++;else if(a==="--no-commit")n.noCommit=!0,t++;else if(a==="--no-supersede")n.noSupersede=!0,t++;else if(a==="--out")n.out=e[t+1]||"",t+=2;else if(a.startsWith("--out="))n.out=a.slice(6),t++;else if(a==="--threads"){let r=e[t+1]||"";n.threadIds=r.split(",").map((i)=>i.trim()).filter((i)=>i.length>0),t+=2}else if(a.startsWith("--threads=")){let r=a.slice(10);n.threadIds=r.split(",").map((i)=>i.trim()).filter((i)=>i.length>0),t++}else if(a==="--yes"||a==="-y")n.yes=!0,t++;else if(a==="--quiet"||a==="-q")n.quiet=!0,t++;else if(a==="--format")n.format=e[t+1]||"json",t+=2;else if(a.startsWith("--format="))n.format=a.slice(9),t++;else if(a.startsWith("--"))N({code:"validation_error",message:`Unknown option: ${a}`},G);else if(!n.sessionId)n.sessionId=a,t++;else N({code:"validation_error",message:`Unexpected argument: ${a}`},G)}return n}async function KRe(e,n,t){if(!e.sessionId)N({code:"missing_session_id",message:`Missing required argument: session_id
|
|
699
699
|
|
|
700
700
|
Usage: typescape revise <session_id> [options]`},G);if(e.provider&&!rK.includes(e.provider))N({code:"validation_error",message:`Invalid provider: ${e.provider}. Must be one of: ${rK.join(", ")}`},G);if(e.strategy&&!aK.includes(e.strategy))N({code:"validation_error",message:`Invalid strategy: ${e.strategy}. Must be one of: ${aK.join(", ")}`},G);N({code:"not_implemented",message:"The revise execution flow is not yet implemented (bd-3cg5r.81.2)."},G)}async function iK(e,n,t){let a=YRe(e);await KRe(a,n,t)}function WRe(e){let n={format:"json"},t=0;while(t<e.length){let a=e[t];if(a==="--include-archived")n.includeArchived=!0,t++;else if(a==="--limit")n.limit=Number.parseInt(e[t+1]||"50",10),t+=2;else if(a.startsWith("--limit="))n.limit=Number.parseInt(a.slice(8),10),t++;else if(a==="--cursor")n.cursor=e[t+1]||"",t+=2;else if(a.startsWith("--cursor="))n.cursor=a.slice(9),t++;else if(a==="--format")n.format=e[t+1]||"json",t+=2;else if(a.startsWith("--format="))n.format=a.slice(9),t++;else t++}return n}async function oK(e,n,t){let a=WRe(e),r={};if(a.includeArchived)r.include_archived="true";if(a.limit!==void 0)r.limit=String(a.limit);if(a.cursor)r.cursor=a.cursor;let i=await t.get("/repos",{query:r});if(a.format==="json")console.log(JSON.stringify(i.body,null,2));else{let o=i.body.items??[];console.log(`Repositories (${o.length}):`);for(let s of o){let c=s.origin_url??s.local_path??"\u2014",A=s.archived_at?" [archived]":"";console.log(` ${s.id} ${s.display_name} ${c}${A}`)}if(i.body.next_cursor)console.log(`
|