@aria-cli/tools 1.0.14 → 1.0.18
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/README.md +17 -0
- package/dist/.aria-build-stamp.json +1 -1
- package/dist/dns-pinning-vc0r0vpx.js +1 -0
- package/dist/index-6qew5tp1.js +2 -0
- package/dist/index-8xap0se3.js +6 -0
- package/dist/index-a2fr1b3x.js +2 -0
- package/dist/index-e1r4t0h0.js +8 -0
- package/dist/index-syg9gyvy.js +2 -0
- package/dist/index-x52t2mbj.js +4 -0
- package/dist/index.js +163 -169
- package/dist/lsp-client-msnj763y.js +1 -0
- package/dist/network-runtime/index.js +1 -8
- package/dist/pty-ff59hy75.js +1 -0
- package/dist/session-history-6gn52xhp.js +1 -0
- package/dist-cjs/headless-control-contract.d.ts +35 -35
- package/dist-cjs/index.js +171 -186
- package/dist-cjs/network-runtime/index.js +3 -3
- package/dist-cjs/network-runtime/local-control-contract.d.ts +12 -12
- package/package.json +21 -20
package/README.md
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# @aria-cli/tools
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
Part of [ARIA](https://www.npmjs.com/package/@aria-cli/cli) — Adaptive Reasoning Intelligence Agent.
|
|
6
|
+
|
|
7
|
+
## Install
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
npm i @aria-cli/tools
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
See the main [`@aria-cli/cli`](https://www.npmjs.com/package/@aria-cli/cli) package for full documentation.
|
|
14
|
+
|
|
15
|
+
## License
|
|
16
|
+
|
|
17
|
+
MIT
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{kc as V,lc as W,mc as X}from"./index-syg9gyvy.js";import{sc as J}from"./index-6qew5tp1.js";import"./index-a2fr1b3x.js";import*as Y from"node:dns";import{Agent as _}from"undici";async function $(q){let w;try{let B=await Y.promises.lookup(q,{all:!0,verbatim:!0});w=V(B)}catch(B){throw Error(`DNS resolution failed for ${q}: ${J(B)}`)}if(w.length===0)throw Error(`DNS resolution failed for ${q}: no addresses returned`);let G=w.find((B)=>X(B.address));if(G)throw Error(`SSRF protection: ${q} resolves to private network address ${G.address}`);return w}function x(q){return q instanceof Error&&q.name==="AbortError"}function C(q){if(typeof q==="object"&&q!==null&&"code"in q&&typeof q.code==="string")return`${q.code}: ${J(q)}`;if(q instanceof Error&&q.cause){let w=q.cause;if(typeof w.code==="string")return`${w.code}: ${J(q.cause)}`}return J(q)}function L(q,w){return new _({connect:{lookup:(G,B,K)=>{K(null,[{address:q,family:w}])}}})}async function R(q,w){let G=W(q);if(G)throw Error(G);let B=new URL(q),K=await $(B.hostname),N=[],O;for(let{address:Q,family:T}of K){let H=L(Q,T);try{let D=globalThis.fetch;if(typeof D!=="function")throw Error("Global fetch is unavailable");return await D(q,{...w,dispatcher:H})}catch(D){if(x(D))throw D;O=D,N.push(`${Q}/${T}: ${C(D)}`)}finally{if(H&&"close"in H&&typeof H.close==="function")await H.close()}}let Z=N.length>0?` Attempted addresses: ${N.join("; ")}`:"";throw Error(`Fetch failed for ${B.hostname}.${Z}`,{cause:O})}export{R as fetchWithDnsPinning,L as createPinnedAgent};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import*as f from"node:path";import{getErrorMessage as J}from"@aria-cli/types";function C(j,k){return{success:!0,message:j,data:k}}function E(j,k){return{success:!1,message:j,data:k}}function F(j,k){let x=f.normalize(j),q=f.normalize(k),A=q.endsWith(f.sep)?q:q+f.sep;return x===q||x.startsWith(A)}
|
|
2
|
+
export{C as pc,E as qc,F as rc,J as sc};
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import{pc as U,qc as Q,sc as C}from"./index-6qew5tp1.js";import{uc as F}from"./index-a2fr1b3x.js";import*as G from"node:os";import*as X from"node:path";var T=2000,j,O=null;async function M(){if(j!==void 0)return j;if(O)return O;return O=(async()=>{try{let B=(await import("@aria-cli/cli")).SessionHistory,J=process.env.ARIA_HOME??X.join(G.homedir(),".aria"),V="ARIA";try{let{readFileSync:W,existsSync:Y}=await import("node:fs"),K=X.join(J,"config.json");if(Y(K)){let D=JSON.parse(W(K,"utf-8"));if(D.activeArion)V=D.activeArion}}catch{}let R=B.resolvePerArionPath(J,V);return j=new B(R),j}catch{return j=null,null}})(),O}async function N(q){if(q.sessionHistory)return q.sessionHistory;return M()}function E(q){return q.map((z)=>({id:z.id,title:z.title,arion:z.arion,model:z.model,messageCount:z.messageCount,updatedAt:z.updatedAt.toISOString(),completedAt:z.completedAt?.toISOString(),preview:z.preview}))}function L(q,z){if(q.length<=z)return q;return q.slice(0,z-3)+"..."}function A(q,z){if(z.length===36)return q.getSession(z)?z:null;return q.findSessionByPrefix(z)}async function v(q,z){if(z.abortSignal?.aborted)return Q("Operation cancelled");if(!q.action)return Q("action is required. Valid actions: list, search, get, current, stats, delete, set_title");let B=await N(z);if(!B)return Q("Session history is not available in this context");try{switch(q.action){case"list":return P(q,B);case"search":return g(q,B);case"get":return k(q,B);case"current":return b(z,B);case"stats":return w(B);case"delete":return H(q,B);case"set_title":return _(q,B);default:return Q(`Unknown action "${q.action}". Valid actions: list, search, get, current, stats, delete, set_title`)}}catch(J){return Q(C(J))}}function P(q,z){let B=q.limit??20,J=q.offset??0,V=z.listSessions(B,J),R=E(V),W={sessions:R,total:R.length,limit:B,offset:J};if(R.length===0)return U("No sessions found",W);let Y=R.map((K)=>`• ${K.id.slice(0,8)}… | ${K.title||"(untitled)"} | ${K.messageCount} msgs | ${K.arion} | ${K.updatedAt.slice(0,10)}`);return U(`Found ${R.length} session(s):
|
|
2
|
+
${Y.join(`
|
|
3
|
+
`)}`,W)}function g(q,z){if(!q.query||q.query.trim()==="")return Q("query is required for 'search' action");let B=q.limit??20,J=q.offset??0,V=z.searchSessionsFts(q.query,B,J),R=E(V),W={sessions:R,total:R.length,limit:B,offset:J};if(R.length===0)return U(`No sessions found matching "${q.query}"`,W);let Y=R.map((K)=>`• ${K.id.slice(0,8)}… | ${K.title||"(untitled)"} | ${K.messageCount} msgs | ${K.arion} | ${K.updatedAt.slice(0,10)}`);return U(`Found ${R.length} session(s) matching "${q.query}":
|
|
4
|
+
${Y.join(`
|
|
5
|
+
`)}`,W)}function k(q,z){if(!q.sessionId||q.sessionId.trim()==="")return Q("sessionId is required for 'get' action");let B=A(z,q.sessionId);if(!B)return Q(`Session not found for ID/prefix "${q.sessionId}"`);let J=z.getSession(B);if(!J)return Q(`Session ${B} not found`);let V=q.messageLimit??50,W=J.messages.slice(-V).map((Z)=>({role:Z.role,content:L(Z.content,T),createdAt:Z.createdAt.toISOString(),toolCallId:Z.toolCallId})),Y;try{let Z=z.getRunMetrics?.(B)??[];Y=Z.length>0?Z.map(($)=>({turnCount:$.turnCount,inputTokens:$.inputTokens,outputTokens:$.outputTokens,estimatedCost:$.estimatedCost,wallTimeMs:$.wallTimeMs})):void 0}catch{}let K={id:J.id,arion:J.arion,model:J.model,messageCount:J.messages.length,messages:W,metrics:Y},D=J.messages.length>V?` (showing last ${V} of ${J.messages.length})`:"";return U(`Session ${J.id.slice(0,8)}… | ${J.arion} | ${J.model} | ${J.messages.length} messages${D}`,K)}function b(q,z){if(!q.currentSessionId)return Q("No current session ID available");let B={sessionId:q.currentSessionId},J=z.getSession(q.currentSessionId);if(J)return U(`Current session: ${J.id.slice(0,8)}… | ${J.arion} | ${J.model} | ${J.messages.length} messages`,{...B,arion:J.arion,model:J.model,messageCount:J.messages.length});return U(`Current session: ${q.currentSessionId}`,B)}function w(q){let z=q.getSessionCount?.()??0,B=(q.getIncompleteSessions?.(1000)??[]).length,J={totalSessions:z,incompleteSessions:B};return U(`Session stats: ${z} total, ${B} incomplete, ${z-B} completed`,J)}function H(q,z){if(!q.sessionId||q.sessionId.trim()==="")return Q("sessionId is required for 'delete' action");let B=A(z,q.sessionId);if(!B)return Q(`Session not found for ID/prefix "${q.sessionId}"`);return z.deleteSession(B),U(`Deleted session ${B}`)}function _(q,z){if(!q.sessionId||q.sessionId.trim()==="")return Q("sessionId is required for 'set_title' action");if(!q.title||q.title.trim()==="")return Q("title is required for 'set_title' action");let B=A(z,q.sessionId);if(!B)return Q(`Session not found for ID/prefix "${q.sessionId}"`);return z.setSessionTitle(B,q.title),U(`Set title of session ${B.slice(0,8)}… to "${q.title}"`)}
|
|
6
|
+
export{N as ic,v as jc};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import{z as y}from"zod";var T=y.enum(["in_process","local_runtime","tunnel","relay"]),B=y.enum(["accepted","queued_for_route","dispatching","sent","acked","expired","failed","rejected"]),g=y.enum(["none","handshaking","connected","reconnecting","dead"]),H=y.enum(["cannot_address","can_queue_only","can_send_now"]),E=y.enum(["route_not_established","awaiting_remote_ack","transport_unavailable"]),tt=y.enum(["queued_for_route","dispatching","acked","expired"]),pe=y.object({transport:T,delivered:y.boolean(),queued:y.boolean(),accepted:y.boolean().optional(),deliveryState:B.optional(),sessionState:g.optional(),deliveryReadiness:H.optional(),queuedReason:E.optional()}).strict(),se={rejected:0,failed:1,expired:2,queued_for_route:3,dispatching:4,accepted:5,sent:6,acked:7},Re={dead:0,none:1,handshaking:2,reconnecting:3,connected:4},ue={cannot_address:0,can_queue_only:1,can_send_now:2};function nt(t,n){if(!n)return t.deliveryState==="rejected"?"rejected":"failed";if(t.delivered)return"acked";if(t.queued){if(t.queuedReason==="awaiting_remote_ack"||t.deliveryState==="dispatching"||t.deliveryState==="sent")return"dispatching";return"queued_for_route"}if(t.deliveryState==="expired")return"expired";return"sent"}function ot(t){if(!t.deliveryState)return;if(t.deliveryState==="sent"&&t.queued&&t.queuedReason==="awaiting_remote_ack")return"dispatching";return t.deliveryState}function rt(t,n){return se[t]<=se[n]?t:n}function it(t,n){if(t==="local_runtime")return"none";switch(n){case"queued_for_route":return"handshaking";case"dispatching":return"connected";case"failed":case"rejected":case"expired":return"none";case"acked":return"connected";case"accepted":case"sent":return"connected";default:return"none"}}function at(t,n,a){if(t==="local_runtime")return"none";if(!n)return a;return Re[n]<=Re[a]?n:a}function ct(t,n,a){if(n==="failed"||n==="rejected")return"cannot_address";if(t==="local_runtime"&&n==="acked")return"can_queue_only";if(n==="queued_for_route")return"can_queue_only";if(n==="dispatching")return a==="reconnecting"?"can_queue_only":"can_send_now";if(n==="expired")return"cannot_address";return a==="connected"?"can_send_now":"can_queue_only"}function st(t,n){if(!t)return n;return ue[t]<=ue[n]?t:n}function Rt(t,n){if(n==="rejected")return!1;return t.accepted??!0}function ut(t){return t==="queued_for_route"||t==="dispatching"}function pt(t,n,a){if(!a)return;if(t.queuedReason)return t.queuedReason;if(n==="dispatching")return"awaiting_remote_ack";if(n==="queued_for_route")return"route_not_established";return}function b(t){let n=nt(t,t.accepted??!0),a=ot(t),d=a?rt(a,n):n,w=Rt(t,d),$=d==="acked",ie=ut(d),We=it(t.transport,d),ae=at(t.transport,t.sessionState,We),Ne=ct(t.transport,d,ae),et=st(t.deliveryReadiness,Ne),ce=pt(t,d,ie);return{transport:t.transport,delivered:$,queued:ie,accepted:w,deliveryState:d,sessionState:ae,deliveryReadiness:et,...ce?{queuedReason:ce}:{}}}function dt(t){return b({transport:t.transport,delivered:!0,queued:!1,accepted:!0,deliveryState:"acked",...t.sessionState?{sessionState:t.sessionState}:{},...t.deliveryReadiness?{deliveryReadiness:t.deliveryReadiness}:{}})}function mt(t){return b({transport:t.transport,delivered:!1,queued:!0,accepted:!0,deliveryState:"queued_for_route",queuedReason:"route_not_established",...t.sessionState?{sessionState:t.sessionState}:{},...t.deliveryReadiness?{deliveryReadiness:t.deliveryReadiness}:{}})}function Pt(t){return b({transport:t.transport,delivered:!1,queued:!0,accepted:!0,deliveryState:"dispatching",queuedReason:"awaiting_remote_ack",...t.sessionState?{sessionState:t.sessionState}:{},...t.deliveryReadiness?{deliveryReadiness:t.deliveryReadiness}:{}})}function lt(t){return b({transport:t.transport,delivered:!1,queued:!1,accepted:!0,deliveryState:"sent",...t.sessionState?{sessionState:t.sessionState}:{},...t.deliveryReadiness?{deliveryReadiness:t.deliveryReadiness}:{}})}function St(t){switch(t){case"queued":case"queued_for_route":return"queued_for_route";case"dispatching":case"acked":case"expired":return t;default:throw Error(`[delivery-receipts] Unsupported outbox status: ${t}`)}}import{z as r}from"zod";var p=r.string().trim().min(1),i=p.brand(),k=p.brand(),ht=r.object({nodeId:i,createdAt:p,schemaVersion:r.number().int().positive(),migratedFromLegacy:r.boolean()}),j=r.number().int().nonnegative(),x=r.number().int().nonnegative(),I=r.number().int().nonnegative(),V=r.number().int().nonnegative(),de=r.enum(["local_operator_confirmed","remote_capability_authenticated"]),yt=r.object({localNodeId:i,targetNodeId:i,revocationGeneration:V,operatorConfirmation:de}),M=r.number().int().positive(),ft=r.number().int().nonnegative(),me=r.object({schemaVersion:r.number().int().positive(),nodeId:i,ariaHome:p,runtimePid:r.number().int().positive(),runtimeId:k,displayNameSnapshot:p.optional(),runtimeSocket:p,startedAt:p,lastHeartbeat:p,ownerGeneration:M}).strict(),A=p.brand(),u=p.brand(),m=p.brand(),D=p.brand(),Z=p.brand(),P=p.brand(),h=r.object({host:p,port:r.number().int().min(1).max(65535)}),J=r.discriminatedUnion("kind",[r.object({kind:r.literal("node"),nodeId:i}),r.object({kind:r.literal("client"),clientId:A})]),l=r.object({host:p,port:r.number().int().min(1).max(65535),tlsCaFingerprint:D,tlsServerIdentity:u,protocolVersion:r.number().int().positive(),endpointRevision:x.optional()}),X=r.object({nodeId:i,principalFingerprint:u,transportPublicKey:m,publicationRevision:j.optional(),controlEndpoint:l.optional(),displayNameSnapshot:p.optional()}),vt=r.object({nodeId:i,runtimeId:k,lastHeartbeat:p.optional(),controlEndpoint:l.optional(),displayNameSnapshot:p.optional()}),Pe=p.brand(),kt=r.discriminatedUnion("status",[r.object({status:r.literal("pending"),queuedAt:r.string(),nextAttemptAt:r.string().optional(),attemptCount:r.number()}),r.object({status:r.literal("delivered"),deliveredAt:r.string()}),r.object({status:r.literal("expired"),reason:r.literal("ttl_exceeded"),queuedAt:r.string(),expiredAt:r.string()}),r.object({status:r.literal("rejected"),reason:r.enum(["recipient_revoked","recipient_unknown","envelope_invalid"])})]),Ct=r.discriminatedUnion("status",[r.object({status:r.literal("accepted"),operationId:Pe,queuedAt:r.string()}),r.object({status:r.literal("rejected"),reason:r.enum(["recipient_revoked","recipient_unknown","envelope_invalid"])})]);import{z as le}from"zod";var bt=le.string().trim().min(1),K=le.object({nodeId:i,principalFingerprint:u,transportPublicKey:m,bindingGeneration:I,displayNameSnapshot:bt.optional()}).strict();import{z as R}from"zod";import{z as c}from"zod";import{z as L}from"zod";var Se=L.string().trim().min(1),xt=L.record(L.string(),L.unknown()),U=L.enum(["client_attached","client_detached","runtime_started","runtime_stopped","runtime_stale","runtime_restarted","pair_proposed","proof_committed","continuity_bound","revocation_committed","ingress_accepted","ingress_rejected","durable_send_queued","durable_send_dispatching","durable_send_acked","durable_send_expired"]),he=L.object({eventId:Se,nodeId:i,runtimeId:k,kind:U,revision:L.number().int().nonnegative().optional(),recordedAt:Se,payload:xt}).strict();var s=c.string().trim().min(1),Lt=c.string().min(1).refine((t)=>t.trim().length>0),ye=c.record(c.string(),c.unknown());function fe(t){let n=c.toJSONSchema(t);return delete n.$schema,n}var F=1,S=c.literal(F);function ve(t){return t===F}function wt(t,n="network runtime"){if(!ve(t))throw Error(`Unsupported ${n} protocol version ${String(t)}. Supported: ${F}`);return t}var ke=c.object({protocolVersion:S,messageId:s,senderNodeId:i,recipientNodeId:i,storedAt:c.number().int().nonnegative()}).strict(),At=c.object({nodeId:i,audienceNodeId:i.optional(),publicKey:m,leaderDisplayNameSnapshot:s.optional(),host:s,port:c.number().int().min(1).max(65535),controlEndpoint:l.optional(),psk:s,displayNameSnapshot:s.optional(),signingPublicKey:P.optional(),caCert:Lt.optional(),createdAt:c.number().int().nonnegative(),expiresAt:c.number().int().nonnegative(),tokenNonce:s,coordinationUrl:s.optional(),networkId:s.optional()}).strict(),W=c.object({protocolVersion:S,nodeId:i,principalFingerprint:u,peerPublicKey:m,signingPublicKey:P,transportEndpoint:h,controlEndpoint:l.optional(),displayNameSnapshot:s.optional(),inviteTokenNonce:s}).strict(),Ce=W.extend({proofOfWork:s}).strict(),Dt=fe(Ce),_t=c.union([c.object({protocolVersion:S,deliveryAck:ke}).strict(),c.object({protocolVersion:S,ariaMessage:c.unknown()}).strict(),c.object({protocolVersion:S,joinRequest:W}).strict()]),It=X.extend({protocolVersion:S,publicationRevision:j,signingPublicKey:P,transportEndpoint:h,advertisedHosts:c.array(s).min(1).optional()}).strict(),qt=c.object({protocolVersion:S,nodeId:i,displayNameSnapshot:s,principalFingerprint:u,controlPort:c.number().int().min(1).max(65535),advertisedHosts:c.array(s).min(1),tlsCaFingerprint:c.string().trim().min(1).optional()}).strict(),Tt=c.object({protocolVersion:S,nodeId:i,transportPublicKey:m,principalFingerprint:u,endpointRevision:x,controlEndpoint:l.optional(),displayNameSnapshot:s.optional()}).strict(),Bt=c.object({protocolVersion:S,nodeId:i,principalFingerprint:u,transportPublicKey:m,controlEndpoint:l.optional(),displayNameSnapshot:s.optional(),presharedKey:s}).strict(),be=c.object({nodeId:i,previousPrincipalFingerprint:u,newPrincipalFingerprint:u,newTransportPublicKey:m.optional(),bindingGeneration:I,revocationGeneration:V.optional(),createdAt:s}).strict(),N=c.object({statement:be,delegationSignature:s,acceptanceSignature:s,previousPublicKey:s,newPublicKey:s}).strict(),xe=c.enum(["network.register","network.revoke","network.list_peers","pair.direct","pair.relay","pair.relay_response","peer.update_capabilities","peer.update_trust_tier"]),Le=c.object({version:S,id:s,operation:xe,principal:K,target:K,namespace:s,policyEpoch:c.number().int().nonnegative(),nonce:s,timestamp:c.number().int().nonnegative(),ttl:c.number().int().positive(),contextHash:s,payload:ye,signature:s,method:s.optional(),path:s.optional(),metadata:ye.optional(),reason:s.optional(),parentEnvelopeId:s.optional()}).strict(),we=c.object({nodeId:i,envelope:Le}).strict(),gt=fe(we);var f=R.string().trim().min(1);function G(t){let n=R.toJSONSchema(t);return delete n.$schema,n}var Ae=R.object({displayNameSnapshot:f,nodeId:i,signingPublicKey:P,port:R.number().int().min(1).max(65535),ephemeralPublicKey:R.string().max(512),ephemeralKeySignature:R.string().max(512),caCert:R.string().max(4096).optional(),protocolVersion:R.number().min(1).max(100).optional(),wait:R.boolean().optional()}).strict(),Ht=G(Ae),ee=R.object({inviteToken:f,nodeId:i,displayNameSnapshot:f.optional(),transportEndpoint:h,controlEndpoint:l,continuity:N.optional()}).strict(),Et=G(ee),De=R.object({targetNodeId:i,displayNameSnapshot:f,nodeId:i,signingPublicKey:P,port:R.number().int().min(1).max(65535),ephemeralPublicKey:R.string().max(512),ephemeralKeySignature:R.string().max(512),caCert:R.string().max(4096).optional()}).strict(),jt=G(De),_e=R.object({targetNodeId:i,signingPublicKey:P,signature:f.max(512),timestamp:f.max(20)}).strict(),Vt=G(_e),Ie=R.object({id:f,nodeId:i,displayNameSnapshot:f.optional(),principalFingerprint:u,signingPublicKey:P,port:R.number().int().min(1).max(65535),ingressHost:f,responderControlHostHint:f.optional(),ephemeralPublicKey:R.string().max(512).optional(),ephemeralKeySignature:R.string().max(512).optional(),caCert:R.string().max(4096).optional(),expiresAt:R.number().int().nonnegative()}).strict(),Mt=R.object({requests:Ie.array()}).strict();import{z as e}from"zod";import{z as v}from"zod";var Te=v.enum(["active","pending","pending_tunnel","pending_verification","revoked"]),O=v.enum(["invited","joining","paired_unverified","verified","revoked"]),Q=v.enum(["unknown","endpoint_known","connecting","connected","degraded","disconnected"]),Jt=v.enum(["repair","continuity","revocation"]),Be=v.object({status:Te,endpointHost:v.string().nullable().optional(),endpointPort:v.number().int().nullable().optional(),lastHandshake:v.number().int().nullable().optional()}),Kt={invited:["unknown","endpoint_known"],joining:["unknown","endpoint_known","connecting"],paired_unverified:["unknown","endpoint_known","connecting","connected","degraded","disconnected"],verified:["unknown","endpoint_known","connecting","connected","degraded","disconnected"],revoked:["unknown","disconnected"]};function ge(t,n){return Kt[t].includes(n)}var He=v.object({identityState:O,transportState:Q}).superRefine((t,n)=>{if(!ge(t.identityState,t.transportState))n.addIssue({code:v.ZodIssueCode.custom,message:`invalid peer state combination: ${t.identityState}/${t.transportState}`})});function Ft(t){let n=Be.parse(t),a=Boolean(n.endpointHost&&n.endpointPort),d=typeof n.lastHandshake==="number"&&Number.isFinite(n.lastHandshake)&&n.lastHandshake>0,w=n.status==="pending"?"invited":n.status==="revoked"?"revoked":n.status==="active"?"verified":"paired_unverified",$=(()=>{switch(n.status){case"active":return d?"connected":a?"endpoint_known":"disconnected";case"pending_tunnel":return d?"connected":a?"connecting":"unknown";case"pending_verification":return d?"connected":a?"endpoint_known":"unknown";case"pending":return a?"endpoint_known":"unknown";case"revoked":return a?"disconnected":"unknown"}})();return He.parse({identityState:w,transportState:$})}var Gt={invited:["invited","joining","revoked"],joining:["joining","paired_unverified","revoked"],paired_unverified:["paired_unverified","verified","revoked"],verified:["verified","revoked"],revoked:["revoked"]};function Ot(t,n,a={}){if(t==="verified"&&n==="paired_unverified")return a.viaContinuity===!0;return Gt[t].includes(n)}var Qt={unknown:["unknown","endpoint_known"],endpoint_known:["endpoint_known","connecting","disconnected"],connecting:["connecting","connected","endpoint_known","disconnected"],connected:["connected","degraded","disconnected"],degraded:["degraded","connected","disconnected"],disconnected:["disconnected","endpoint_known"]};function Yt(t,n){return Qt[t].includes(n)}var qe={repair:0,continuity:1,revocation:2};function zt(t,n){return qe[t]-qe[n]}var o=e.string().trim().min(1),Ee=e.enum(["minimal","balanced","high","full"]),Y=e.array(e.string()).optional(),$t=e.array(e.custom()).optional();function Zt(t){let n=e.toJSONSchema(t);return delete n.$schema,n}var Xt=e.object({task:o,arion:o.optional(),cwd:o.optional(),history:$t,requestedModel:o.optional(),preferredTier:e.enum(["fast","balanced","powerful","ensemble"]).optional(),budget:e.number().positive().optional(),maxTurns:e.number().int().positive().optional(),autonomy:Ee.optional(),allowedTools:Y,deniedTools:Y,noMemory:e.boolean().optional(),systemPrompt:e.string().optional(),approvalMode:e.enum(["pause","approve","deny"]).optional(),askUserAnswers:e.array(e.string()).optional()}).strict(),q=e.lazy(()=>e.object({message:e.string(),name:e.string().optional(),stack:e.string().optional(),cause:q.optional()}).catchall(e.unknown()));function Ut(t){if(!t||typeof t!=="object")return;let n=t.message;if(typeof n!=="string")return;let a=n.trim();return a.length>0?a:void 0}function Wt(t){let n=t.trim().toLowerCase();return n==="internal server error"||n.startsWith("internal server error:")||n.startsWith("http 500")}function je(t,n){let a=typeof t==="string"&&t.trim().length>0?t:void 0,d=Ut(n);if(!d)return a;if(!a||Wt(a))return d;return a}function Nt(t,n){let a=je(t,n)??"Trusted runtime error";return Object.assign(Error(a),{...n===void 0?{}:{diagnostic:n},...typeof t==="string"&&t.trim().length>0&&t!==a?{publicMessage:t}:{}})}var en=e.object({success:e.boolean(),output:e.string().optional(),messages:e.array(e.unknown()).optional(),toolCalls:e.array(e.unknown()).optional(),usage:e.unknown().optional(),turnCount:e.number().int().nonnegative().optional(),thinking:e.array(e.unknown()).optional(),nativeToolResults:e.array(e.unknown()).optional(),traces:e.array(e.unknown()).optional(),pipelineTiming:e.unknown().optional(),guardrailEvents:e.array(e.unknown()).optional(),handoffs:e.array(e.unknown()).optional(),state:e.unknown().optional(),error:e.string().optional(),diagnostic:q.optional()}).strict(),tn=e.object({state:e.unknown(),arion:o.optional(),cwd:o.optional(),requestedModel:o.optional(),preferredTier:e.enum(["fast","balanced","powerful","ensemble"]).optional(),budget:e.number().positive().optional(),maxTurns:e.number().int().positive().optional(),autonomy:Ee.optional(),allowedTools:Y,deniedTools:Y,noMemory:e.boolean().optional(),systemPrompt:e.string().optional(),approvalMode:e.enum(["pause","approve","deny"]).optional(),askUserAnswers:e.array(e.string()).optional()}).strict(),nn=e.discriminatedUnion("type",[e.object({type:e.literal("text_delta"),content:e.string()}),e.object({type:e.literal("tool_start"),id:o,name:o,input:e.unknown().optional()}),e.object({type:e.literal("approval_needed"),toolName:o,toolInput:e.unknown().optional(),riskLevel:e.string().optional(),issues:e.array(e.string()).optional()}),e.object({type:e.literal("tool_result"),id:o,name:o,durationMs:e.number().nonnegative(),result:e.unknown(),input:e.unknown().optional()}),e.object({type:e.literal("usage_update"),usage:e.unknown()}),e.object({type:e.literal("turn_complete"),turnNumber:e.number().int().nonnegative()}),e.object({type:e.literal("guardrail_rejected"),stage:e.enum(["input","output"]),message:e.string()}),e.object({type:e.literal("pipeline_timing"),report:e.unknown()}),e.object({type:e.literal("messages_snapshot"),messages:e.array(e.unknown())}),e.object({type:e.literal("error"),error:e.object({message:e.string(),diagnostic:q.optional()})}),e.object({type:e.literal("native_tool_result"),metadata:e.unknown()}),e.object({type:e.literal("thinking_start")}),e.object({type:e.literal("thinking_delta"),content:e.string()}),e.object({type:e.literal("thinking_end"),blocks:e.array(e.unknown()),durationMs:e.number().nonnegative()}),e.object({type:e.literal("tool_args_delta"),id:o,args:e.string()}),e.object({type:e.literal("span_start"),spanId:o,spanType:o,name:o}),e.object({type:e.literal("span_end"),spanId:o,durationMs:e.number().nonnegative()}),e.object({type:e.literal("handoff_start"),target:o,id:o}),e.object({type:e.literal("handoff_result"),target:o,result:e.string(),id:o}),e.object({type:e.literal("paused"),state:e.unknown()})]),on=e.object(pe.shape).strict().transform((t)=>b(t)),rn=e.object({transport:T,delivered:e.boolean(),queued:e.boolean(),accepted:e.boolean().optional(),deliveryState:B.optional(),sessionState:g.optional(),deliveryReadiness:H.optional(),queuedReason:E.optional(),storedAt:e.number().int().nonnegative().optional()}).strict().transform(({storedAt:t,...n})=>({...b(n),...t!==void 0?{storedAt:t}:{}})),an=e.object({rawMessage:e.record(e.string(),e.unknown()),recipientInbox:J.optional(),to:o.optional(),content:e.string().optional(),type:o.optional(),priority:e.number().int().optional(),correlationId:e.string().optional(),metadata:e.record(e.string(),e.unknown()).optional()}).strict().superRefine((t,n)=>{if(!t.recipientInbox||t.to===void 0)return;if(t.recipientInbox.kind==="client"){n.addIssue({code:e.ZodIssueCode.custom,message:'OutboundMessage.to is a compatibility alias for node recipients only; omit it for recipientInbox.kind === "client"',path:["to"]});return}if(t.recipientInbox.nodeId!==t.to)n.addIssue({code:e.ZodIssueCode.custom,message:"OutboundMessage.recipientInbox.nodeId must match OutboundMessage.to when both are provided",path:["to"]})}),cn=e.object({afterRevision:e.number().int().nonnegative().optional()}).strict(),Ve=e.object({afterCreatedAt:e.number().int().nonnegative().optional()}).strict(),sn=e.object({cursor:Ve.optional(),limit:e.number().int().positive().max(1000).optional(),unreadOnly:e.boolean().optional()}).strict(),Rn=e.object({id:o,senderNodeId:i,senderDisplayNameSnapshot:o.optional(),senderType:o.optional(),senderClientId:e.string().nullable().optional(),recipientClientId:e.string().nullable().optional(),inboxAddress:J,type:o,content:e.string(),priority:e.number().int(),createdAt:e.number().int().nonnegative(),correlationId:e.string().nullable().optional(),replyTo:e.string().nullable().optional()}).strict(),un=e.object({nodeId:i,transportPublicKey:m,displayNameSnapshot:o.optional(),identityState:O,transportState:Q,endpointRevision:x,updatedAt:e.string(),lastSeenAt:e.string().optional()}).strict(),pn=e.object({displayNameSnapshot:o,nodeId:i,host:o,port:e.number().int().min(1).max(65535),principalFingerprint:u,version:o,tlsCaFingerprint:D.optional(),transport:e.enum(["lan","wan"]).optional(),status:e.enum(["discovered","connected"]).optional()}).strict(),te=e.object({allowedToolCategories:e.array(o).optional(),allowedShellCommands:e.array(o).optional(),maxWriteOpsPerMinute:e.number().int().positive().optional(),maxGitPushesPerHour:e.number().int().positive().optional()}).strict(),Me=e.object({status:e.enum(["running","stopped"]),intervalMs:e.number().int().positive().nullable(),lastWakeTickAt:e.string().nullable(),lastCheckpointResult:e.enum(["success","error","never"]),safetyPolicySummary:te,ownerClientKind:o.nullable()}).strict();function dn(){return{status:"stopped",intervalMs:null,lastWakeTickAt:null,lastCheckpointResult:"never",safetyPolicySummary:{},ownerClientKind:null}}var mn=e.object({nodeId:i,runtimeId:k,port:e.number().int().min(1).max(65535),attachedClients:e.number().int().nonnegative().optional(),autonomousLoop:Me.optional().default(dn())}).strict(),Pn=e.object({intervalMs:e.number().int().positive().optional(),safetyPolicy:te.optional()}).strict(),ln=e.object({id:o,nodeId:i,displayNameSnapshot:o.optional(),principalFingerprint:u}).strict(),Je=e.object({inviteId:o,inviteLabel:o.optional(),createdAt:o,expiresAt:o.nullable().optional()}).strict(),Sn=e.object({requestId:o,accepted:e.boolean()}).strict(),hn=e.object({accepted:e.boolean().optional(),inviteToken:e.string().optional(),error:e.string().optional()}).strict(),yn=e.object({inviteLabel:o.optional(),durationMs:e.number().int().min(0).optional()}).strict(),fn=e.object({inviteToken:o,pendingInvite:Je}).strict(),vn=e.object({nodeId:i,displayName:o,principalFingerprint:u.optional(),controlEndpoint:l,transportEndpoint:h.optional(),transport:e.enum(["lan","wan"]).optional()}).strict(),_o=e.enum(["pending_verification"]),kn=e.discriminatedUnion("mode",[e.object({nodeId:i,displayNameSnapshot:o.optional(),mode:e.literal("lan_direct"),pairingProofState:e.literal("pending_verification")}).strict(),e.object({nodeId:i,displayNameSnapshot:o.optional(),mode:e.literal("wan_pair"),pairingProofState:e.literal("pending_verification")}).strict()]),Ke=e.object({success:e.boolean(),nodeId:i,displayNameSnapshot:o.optional()}).strict(),Cn=e.object({inviteToken:o}).strict(),bn=Ke,xn=e.object({inviteId:o}).strict(),Ln=e.object({cancelled:e.boolean(),inviteId:o}).strict(),Fe=e.object({peerNodeId:i,principalFingerprint:u,peerDisplayName:o.optional(),peerWgPubkey:m,peerSigningPubkey:o,transportEndpoint:h,controlEndpoint:l,psk:o}).strict(),wn=Zt(Fe),An=e.object({received:e.literal(!0),pairingProofState:e.literal("pending_verification")}).strict(),Dn=e.object({nodeId:i,envelope:e.record(e.string(),e.unknown()).optional()}).strict(),_n=e.object({revoked:e.boolean(),nodeId:i,displayNameSnapshot:o.optional()}).strict(),In=e.object({nodeId:i,endpointHost:o,endpointPort:e.number().int().min(1).max(65535),endpointRevision:x}).strict(),qn=e.object({repaired:e.boolean(),nodeId:i,endpointHost:o,endpointPort:e.number().int().min(1).max(65535),endpointRevision:x}).strict(),ne=e.enum(["tui","daemon-launcher","pipe","local-api"]),Tn=e.object({clientId:A,clientKind:ne,displayLabel:o,self:e.boolean(),attachedAt:o,lastSeenAt:o}).strict(),oe=e.object({clientId:A,clientAuthToken:o}).strict(),Ge=oe,Bn=e.object({clientKind:ne,lease:e.boolean().optional(),pid:e.number().optional(),displayName:e.string().optional()}).strict(),gn=oe,Hn=e.object({clientId:A}).strict(),En=e.object({detached:e.boolean()}).strict(),Oe=e.enum(["submitRun","resumeRun","streamRun","subscribeRuntimeEvents","sendBestEffort","sendDurable","listInbox","listDirectClientInbox","listPeers","listNearbyPeers","listAttachedClients","subscribeDirectClientInbox","getRuntimeStatus","startAutonomousLoop","stopAutonomousLoop","getRuntimeBootstrap","listPendingPairRequests","respondToPairRequest","createInvite","listPendingInvites","acceptInviteToken","cancelInvite","invitePeer","acceptInvite","directPair","revokePeer","repairPeer","attachClient","detachClient","watchInbox"]),jn=new Set(["listAttachedClients","listDirectClientInbox","subscribeDirectClientInbox"]),Vn=e.object({id:o,method:Oe,payload:e.unknown().optional(),auth:Ge.optional()}).strict().superRefine((t,n)=>{if(jn.has(t.method)&&t.auth===void 0)n.addIssue({code:e.ZodIssueCode.custom,message:`Local control socket method ${t.method} requires attached-client auth`,path:["auth"]})}),Qe=e.object({id:o,ok:e.literal(!0),payload:e.unknown().optional()}).strict(),Ye=e.object({id:o,ok:e.literal(!1),error:o,reason:e.string().optional(),diagnostic:q.optional()}).strict(),Mn=e.discriminatedUnion("ok",[Qe,Ye]);import{z as C}from"zod";var _=C.string().trim().min(1),Jn=C.string().min(1).refine((t)=>t.trim().length>0),ze=C.number().int().nonnegative(),re=C.enum(["starting","tls_bound","control_ready","network_ready","mesh_ready","degraded","stopped"]),$e=C.object({host:_,port:C.number().int().min(1).max(65535)}).strict(),Ze=C.object({caFingerprint:D,caCertPem:Jn,principalIdentity:u,loopbackIdentity:Z}).strict(),Kn=C.object({signingPublicKey:P,transportPublicKey:m,transportEndpoint:h,displayNameSnapshot:_.optional()}).strict(),Fn=C.object({nodeId:i,runtimeId:k,arionName:_.optional(),ownerGeneration:M,bootstrapRevision:ze,phase:re,protocolVersion:S,controlEndpoint:$e,displayNameSnapshot:_.optional(),signingPublicKey:P,transportPublicKey:m,transportEndpoint:h,tls:Ze,publishedAt:_,degradedReason:_.optional(),failedPhase:re.optional()}).strict();function Gn(t){return t==="invited"||t==="joining"}function On(t,n){return t==="paired_unverified"&&n.proofValid}function Qn(t){return t==="joining"||t==="paired_unverified"||t==="verified"}function Yn(t){return t==="paired_unverified"||t==="verified"}function zn(t,n){if(t==="revoked")return!1;return n==="endpoint_known"||n==="connecting"||n==="connected"||n==="degraded"}function $n(t,n){return t==="verified"&&n==="connected"}function Zn(t){return t==="verified"}function Xn(t){return t.trim().toLowerCase()}function Xe(t){let n=Xn(t);return n==="localhost"||n==="::1"||n==="[::1]"||n.endsWith(".localhost")||/^127\./.test(n)}function Un(t){let n=t.endpointHost?.trim(),a=t.endpointPort;if(!n||typeof a!=="number"||!Number.isFinite(a))return{};if(Xe(n))return{};return{endpointHost:n,endpointPort:a}}class z extends Error{kind="StaleOwnerError";claimedGeneration;currentGeneration;constructor(t,n){super(`StaleOwnerError: runtime claims generation ${t} but store is at generation ${n}. This runtime has been superseded and must shut down immediately.`);this.name="StaleOwnerError",this.claimedGeneration=t,this.currentGeneration=n}}function Ue(t){t.exec(`
|
|
2
|
+
CREATE TABLE IF NOT EXISTS owner_epoch (
|
|
3
|
+
scope TEXT PRIMARY KEY DEFAULT 'runtime',
|
|
4
|
+
owner_generation INTEGER NOT NULL
|
|
5
|
+
)
|
|
6
|
+
`)}function Wn(t,n){if(Ue(t),t.prepare(`INSERT INTO owner_epoch (scope, owner_generation) VALUES ('runtime', ?)
|
|
7
|
+
ON CONFLICT(scope) DO UPDATE SET owner_generation = excluded.owner_generation
|
|
8
|
+
WHERE excluded.owner_generation > owner_epoch.owner_generation`).run(n).changes===0){let w=t.prepare("SELECT owner_generation FROM owner_epoch WHERE scope = 'runtime'").get()?.owner_generation??0;if(w>n)throw new z(n,w)}}function Nn(t,n){let d=t.prepare("SELECT owner_generation FROM owner_epoch WHERE scope = 'runtime'").get()?.owner_generation??0;if(d>n)throw new z(n,d)}export{i as a,k as b,ht as c,j as d,x as e,I as f,V as g,de as h,yt as i,M as j,ft as k,me as l,A as m,u as n,m as o,D as p,Z as q,P as r,h as s,J as t,l as u,X as v,vt as w,Pe as x,kt as y,Ct as z,T as A,B,g as C,H as D,E,tt as F,b as G,dt as H,mt as I,Pt as J,lt as K,St as L,U as M,he as N,K as O,F as P,S as Q,ve as R,wt as S,ke as T,At as U,W as V,Ce as W,Dt as X,_t as Y,It as Z,qt as _,Tt as $,Bt as aa,be as ba,N as ca,xe as da,Le as ea,we as fa,gt as ga,Ae as ha,Ht as ia,ee as ja,Et as ka,De as la,jt as ma,_e as na,Vt as oa,Ie as pa,Mt as qa,Te as ra,O as sa,Q as ta,Jt as ua,Be as va,ge as wa,He as xa,Ft as ya,Ot as za,Yt as Aa,zt as Ba,Xt as Ca,q as Da,je as Ea,Nt as Fa,en as Ga,tn as Ha,nn as Ia,on as Ja,rn as Ka,an as La,cn as Ma,Ve as Na,sn as Oa,Rn as Pa,un as Qa,pn as Ra,te as Sa,Me as Ta,mn as Ua,Pn as Va,ln as Wa,Je as Xa,Sn as Ya,hn as Za,yn as _a,fn as $a,vn as ab,kn as bb,Ke as cb,Cn as db,bn as eb,xn as fb,Ln as gb,Fe as hb,wn as ib,An as jb,Dn as kb,_n as lb,In as mb,qn as nb,ne as ob,Tn as pb,oe as qb,Ge as rb,Bn as sb,gn as tb,Hn as ub,En as vb,Oe as wb,Vn as xb,Qe as yb,Ye as zb,Mn as Ab,ze as Bb,re as Cb,$e as Db,Ze as Eb,Kn as Fb,Fn as Gb,Gn as Hb,On as Ib,Qn as Jb,Yn as Kb,zn as Lb,$n as Mb,Zn as Nb,Xe as Ob,Un as Pb,z as Qb,Ue as Rb,Wn as Sb,Nn as Tb};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{sc as Y}from"./index-6qew5tp1.js";function Q(f){if(typeof f!=="object"||f===null)return!1;let m=f;return typeof m.address==="string"&&(m.family===4||m.family===6)}function W(f){if(Array.isArray(f))return f.filter(Q).map((m)=>({address:m.address,family:m.family}));if(Q(f))return[{address:f.address,family:f.family}];return[]}import*as Z from"node:dns";import*as $ from"node:net";var C=5;function D(f){try{let m=new URL(f);if(m.protocol!=="http:"&&m.protocol!=="https:")return`Invalid URL protocol: ${m.protocol}. Only http: and https: are allowed.`}catch{return`Invalid URL format: ${f}`}return null}function j(f){if(f.startsWith("::ffff:"))return j(f.slice(7));if(f==="0.0.0.0"||f==="::"||f==="[::]")return!0;if(f==="::1")return!0;if(/^f[cd]/i.test(f))return!0;if(/^fe[89ab]/i.test(f))return!0;if($.isIPv4(f)){let m=f.split(".").map(Number),k=m[0],w=m[1];if(k===127)return!0;if(k===10)return!0;if(k===172&&w>=16&&w<=31)return!0;if(k===192&&w===168)return!0;if(k===169&&w===254)return!0;if(k===0)return!0;if(k===100&&w>=64&&w<=127)return!0;if(k===192&&w===0&&m[2]===0)return!0;if(k===198&&(w===18||w===19))return!0;if(k>=240)return!0}return!1}async function O(f){let m=D(f);if(m)return m;let k=new URL(f);try{let w=await Z.promises.lookup(k.hostname,{all:!0,verbatim:!0}),N=W(w).map((y)=>y.address);if(N.length===0)return`DNS resolution failed for ${k.hostname}: no addresses returned`;let z=N.find((y)=>j(y));if(z)return`Access to private network address denied: ${k.hostname} resolved to ${z}`}catch(w){return`DNS resolution failed for ${k.hostname}: ${Y(w)}`}return null}async function J(f){let m=f?.body;if(!m||m.locked)return;try{await m.cancel()}catch{}}async function g(f,m,k={}){let w=k.maxHops??C,N=k.fetchFn??fetch,z=k.validateRedirectUrl??O,y=f,x=y.url||k.baseUrl||"",G=0;while(G<w&&y.status>=300&&y.status<400){let L=y.headers.get("Location");if(!L)break;let A;try{if(x)A=new URL(L,x).toString();else A=new URL(L).toString()}catch{throw await J(y),Error(`Invalid redirect URL: ${L}`)}let K=await z(A);if(K)throw await J(y),Error(`Redirect blocked (hop ${G+1}): ${K}`);await J(y),y=await N(A,{...m,redirect:"manual"}),x=y.url||A,G++}return y}
|
|
2
|
+
export{W as kc,D as lc,j as mc,J as nc,g as oc};
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import{pc as _,qc as X,sc as M}from"./index-6qew5tp1.js";import{uc as Wq}from"./index-a2fr1b3x.js";import*as a from"node-pty";import{spawn as m}from"node:child_process";import{constants as l}from"node:os";var r=new Set(["ls","cat","head","tail","wc","file","stat","grep","rg","find","which","whereis","echo","date","whoami","pwd","printenv","uname","hostname"]),n=["git stash list","git status","git log","git diff","git show","git blame","git branch","git remote","git tag","node --version","npm --version","pnpm --version","python --version","pnpm list","npm list"],s=[/rm\s+(?:--?[A-Za-z0-9-]+\s+)*\/(?:\s|$)/,/rm\s+(?:--?[A-Za-z0-9-]+\s+)*\/\*(?:\s|$)/,/rm\s+(?:--?[A-Za-z0-9-]+\s+)*\.(?:\s|$)/,/rm\s+(?:--?[A-Za-z0-9-]+\s+)*~(?:[a-zA-Z]\w*)?(?:\/\*)?(?:\s|$)/,/rm\s+(?:--?[A-Za-z0-9-]+\s+)*\$HOME\b/,/rm\s+(?:--?[A-Za-z0-9-]+\s+)*\*(?:\s|$)/,/>\s*\/dev\/(?:sd[a-z]|nvme\d+|vd[a-z])\b/,/mkfs/,/dd\s+.*(?:if=|of=)/,/chmod\s+(?:-R\s+)?777\b/,/curl[\s\S]*\|\s*(ba)?sh/,/wget[\s\S]*\|\s*(ba)?sh/,/(?:^|[;&|]\s*|\$\(|`|\()\s*(?:(?:env|command)\s+)*eval\b/,/(?:^|[;&|]\s*|\$\(|`|\()\s*(?:(?:env|command)\s+)*shutdown\b/,/(?:^|[;&|]\s*|\$\(|`|\()\s*(?:(?:env|command)\s+)*reboot\b/,/(?:^|[;&|]\s*|\$\(|`|\()\s*(?:(?:env|command)\s+)*halt\b/,/(?:^|[;&|]\s*|\$\(|`|\()\s*(?:(?:env|command)\s+)*init\s+0\b/,/(?:^|[;&|]\s*|\$\(|`|\()\s*(?:(?:env|command)\s+)*systemctl\s+(?:poweroff|halt|reboot)\b/,/(?:^|[;&|]\s*|\$\(|`|\()\s*(?:(?:env|command)\s+)*kill\s+(?:-\d+\s+|-[A-Z]+\s+)*\b1\b/,/:\(\)\{\s*:\|:&\s*\};:/,/\bsudo\b/,/git\s+push\s+.*--force(?!-with-lease)\b/,/git\s+push(?:\s+-[A-Za-z]*f[A-Za-z]*\b|\s+.*\s-[A-Za-z]*f[A-Za-z]*\b)/,/git\s+reset\s+--hard/];function y(q){let J=v(q),Z=i(J);return s.some(($)=>$.test(Z))}function v(q){let J=/<<-?\s*(?:'([^']+)'|"([^"]+)"|(\w+))/g,Z=q,$,U=[];while(($=J.exec(q))!==null){let W=$[1]??$[2]??$[3]??"";if(!W)continue;let Q=q.indexOf(`
|
|
2
|
+
`,$.index);if(Q===-1)continue;let F=Q+1,H=new RegExp(`^\\s*${W.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}\\s*$`,"m"),K=q.slice(F),j=H.exec(K);if(!j)continue;let L=F+j.index;U.push({delimiter:W,bodyStart:F,bodyEnd:L})}for(let W=U.length-1;W>=0;W--){let{bodyStart:Q,bodyEnd:F}=U[W],H=Z.slice(Q,F);Z=Z.slice(0,Q)+H.replace(/[^\n]/g," ")+Z.slice(F)}return Z}function i(q){let J="",Z=!1,$=!1,U=!1;for(let W=0;W<q.length;W++){let Q=q[W];if(Z){if(Q==="'")Z=!1,J+=" ";else J+=" ";continue}if($){if(U){U=!1,J+=" ";continue}if(Q==="\\"){U=!0,J+=" ";continue}if(Q==='"')$=!1,J+=" ";else J+=" ";continue}if(Q==="'"){Z=!0,J+=" ";continue}if(Q==='"'){$=!0,J+=" ";continue}J+=Q}return J}function x(q){let J=q.lastIndexOf("/");return J===-1?q:q.slice(J+1)}function t(q){let J=!1,Z=!1,$=!1;for(let U=0;U<q.length;U++){let W=q[U],Q=q[U+1];if(J){if(W==="'")J=!1;continue}if(Z){if($){$=!1;continue}if(W==="\\"){$=!0;continue}if(W==='"'){Z=!1;continue}if(W==="`"||W==="$"&&Q==="(")return!0;continue}if($){$=!1;continue}if(W==="\\"){$=!0;continue}if(W==="'"){J=!0;continue}if(W==='"'){Z=!0;continue}if(W==="`"||W==="$"&&Q==="(")return!0}return!1}function e(q){let J=[],Z="",$=!1,U=!1,W=!1;for(let Q=0;Q<q.length;Q++){let F=q[Q],H=q[Q+1];if($){if(Z+=F,F==="'")$=!1;continue}if(U){if(Z+=F,W){W=!1;continue}if(F==="\\"){W=!0;continue}if(F==='"')U=!1;continue}if(W){Z+=F,W=!1;continue}if(F==="\\"){Z+=F,W=!0;continue}if(F==="'"){Z+=F,$=!0;continue}if(F==='"'){Z+=F,U=!0;continue}if(F===";"||F===`
|
|
3
|
+
`||F==="\r"||F==="&"&&H==="&"||F==="|"&&H==="|"){if(J.push(Z.trim()),Z="",(F==="&"||F==="|")&&H===F)Q+=1;continue}Z+=F}return J.push(Z.trim()),J}function qq(q){let J=[],Z="",$=!1,U=!1,W=!1;for(let Q=0;Q<q.length;Q++){let F=q[Q],H=q[Q+1],K=Q>0?q[Q-1]:"";if($){if(Z+=F,F==="'")$=!1;continue}if(U){if(Z+=F,W){W=!1;continue}if(F==="\\"){W=!0;continue}if(F==='"')U=!1;continue}if(W){Z+=F,W=!1;continue}if(F==="\\"){Z+=F,W=!0;continue}if(F==="'"){Z+=F,$=!0;continue}if(F==='"'){Z+=F,U=!0;continue}if(F==="|"&&H!=="|"&&K!=="|"){J.push(Z.trim()),Z="";continue}Z+=F}return J.push(Z.trim()),J}var Jq=/(?:>>|(?:^|[^2])>(?!&)|2>(?!&)|&>)/;function Zq(q){let J=q.trim();if(J==="")return!1;if(Jq.test(J))return!1;for(let $ of n)if(J===$||J.startsWith($+" "))return!0;let Z=J.split(/\s+/)[0]??"";return r.has(x(Z))}function C(q){let J=q.trim();if(J==="")return"moderate";let Z=v(J);if(y(Z))return"blocked";if(t(Z))return"moderate";let $=e(Z);for(let Q of $)if(y(Q))return"blocked";let U=[];for(let Q of $){let F=qq(Q);for(let H of F){if(y(H))return"blocked";U.push(H)}}if(/^[A-Za-z_]\w*=/.test(J))return"moderate";let W=U.filter((Q)=>Q.trim()!=="");if(W.length>0&&W.every(Zq))return"safe";return"moderate"}var $q=new Set(["sh","bash","zsh","ksh","dash","ash","fish"]);function S(q,J=[]){let Z=x(q).toLowerCase();if($q.has(Z)&&J[0]==="-c"&&typeof J[1]==="string")return C(J[1]);return C([q,...J].join(" "))}var u=new Set(["LD_PRELOAD","LD_LIBRARY_PATH","DYLD_INSERT_LIBRARIES","DYLD_FRAMEWORK_PATH","DYLD_LIBRARY_PATH","BASH_ENV","ENV","CDPATH","GLOBIGNORE","PROMPT_COMMAND","SHELLOPTS","BASHOPTS","GIT_DIR","GIT_WORK_TREE","GIT_INDEX_FILE","GIT_OBJECT_DIRECTORY","GIT_ALTERNATE_OBJECT_DIRECTORIES","GIT_COMMON_DIR","GIT_PREFIX","GIT_INTERNAL_SUPER_PREFIX","GIT_CONFIG","GIT_CONFIG_GLOBAL","GIT_CONFIG_SYSTEM","GIT_CONFIG_COUNT","GIT_CEILING_DIRECTORIES"]),Fq=new Set(["GIT_DIR","GIT_WORK_TREE","GIT_INDEX_FILE","GIT_INDEX_VERSION","GIT_COMMON_DIR","GIT_OBJECT_DIRECTORY","GIT_ALTERNATE_OBJECT_DIRECTORIES","GIT_CEILING_DIRECTORIES","GIT_DISCOVERY_ACROSS_FILESYSTEM","GIT_NAMESPACE","GIT_CONFIG","GIT_CONFIG_GLOBAL","GIT_CONFIG_SYSTEM","GIT_CONFIG_NOSYSTEM","GIT_CONFIG_COUNT","GIT_CONFIG_PARAMETERS"]),Qq=["GIT_CONFIG_KEY_","GIT_CONFIG_VALUE_","GIT_AUTHOR_","GIT_COMMITTER_"];function f(q){let J=q.toUpperCase();if(Fq.has(J))return!0;return Qq.some((Z)=>J.startsWith(Z))}function Cq(q=process.env){let J={};for(let[Z,$]of Object.entries(q)){if($===void 0)continue;if(f(Z))continue;J[Z]=$}return J}var Uq=new Set([...u,"PATH","NODE_OPTIONS","NODE_PATH","PYTHONPATH","IFS","HOME","SHELL","EDITOR","VISUAL","JAVA_TOOL_OPTIONS","_JAVA_OPTIONS","CLASSPATH","RUBYOPT","GEM_HOME","GEM_PATH","PERL5OPT","PERL5LIB","PYTHONSTARTUP"]);function d(q){return u.has(q.toUpperCase())||f(q)}function w(q){return Uq.has(q.toUpperCase())||f(q)}function R(q,J){let Z=J;if(J){Z={};for(let[W,Q]of Object.entries(J)){if(w(W))continue;Z[W]=Q}}let $=q.env;if(q.env){$={};for(let[W,Q]of Object.entries(q.env)){if(w(W))continue;$[W]=Q}}let U={};for(let[W,Q]of Object.entries(process.env)){if(Q===void 0)continue;if(d(W))continue;U[W]=Q}return{...U,...$,...Z}}function p(q){let J={};for(let[$,U]of Object.entries(process.env)){if(U===void 0)continue;if(d($))continue;J[$]=U}let Z;if(q){Z={};for(let[$,U]of Object.entries(q)){if(w($))continue;Z[$]=U}}return{...J,...Z}}async function Rq(q,J){if(C(q.command)==="blocked")return X(`Command blocked by shell safety policy: ${q.command}`);if(J.abortSignal?.aborted)return X("Command cancelled");let $=q.cwd??J.workingDir,U=R(J,q.env),W=q.timeout??120000;return Hq({program:"/bin/bash",args:["-lc",q.command],cwd:$,env:q.env,timeout:W},{...J,workingDir:$,env:U})}function G(q,J,Z){if(!q)return;if(Z)try{process.kill(-q,J);return}catch{}try{process.kill(q,J)}catch{}}function I(q,J){if(!q)return!1;if(J)try{return process.kill(-q,0),!0}catch{}try{return process.kill(q,0),!0}catch{return!1}}async function Xq(q,J,Z=1000){if(!q)return;let $=Date.now()+Z;while(Date.now()<$){if(!I(q,J))return;await new Promise((U)=>setTimeout(U,25))}}async function Hq(q,J){let Z=q.args??[],$=[q.program,...Z].join(" ");if(S(q.program,Z)==="blocked")return X(`Command blocked by shell safety policy: ${$}`,{stdout:"",stderr:"",exitCode:1});if(J.abortSignal?.aborted)return X("Command cancelled",{stdout:"",stderr:"",exitCode:1});let W=q.cwd??J.workingDir,Q=R(J,q.env),F=q.timeout??120000;return new Promise((H)=>{let K=process.platform!=="win32",j=m(q.program,Z,{cwd:W,env:Q,detached:K});if(j.pid&&J.processRegistry)J.processRegistry.add(j.pid,{command:q.program,args:Z,cwd:W,interactive:!1});let L="",z="",B=!1,Y=!1,h=!1,k,D,A=(O,V)=>{if(h)return;if(h=!0,k)clearTimeout(k);if(D)clearTimeout(D);if(J.abortSignal&&b)J.abortSignal.removeEventListener("abort",b);if(J.processRegistry?.recordExitMetadata?.(j.pid??0,V),j.pid&&J.processRegistry&&!(K&&I(j.pid,K)))J.processRegistry.remove(j.pid,V);H(O)},b;if(J.abortSignal)b=()=>{Y=!0,G(j.pid,"SIGTERM",K),D=setTimeout(()=>{G(j.pid,"SIGKILL",K)},1000)},J.abortSignal.addEventListener("abort",b,{once:!0});if(F)k=setTimeout(()=>{B=!0,G(j.pid,"SIGTERM",K),D=setTimeout(()=>{G(j.pid,"SIGKILL",K)},1000)},F);j.stdout?.on("data",(O)=>{L+=O.toString()}),j.stderr?.on("data",(O)=>{z+=O.toString()}),j.on("error",(O)=>{let V=typeof O==="object"&&O&&"code"in O&&O.code==="ENOENT"?127:1;A(X(M(O),{stdout:"",stderr:z,exitCode:V}))}),j.on("close",(O,V)=>{(async()=>{if(Y||B){if(D)clearTimeout(D),D=void 0;G(j.pid,"SIGKILL",K),await Xq(j.pid,K)}if(Y){A(X("Command cancelled",{stdout:L,stderr:z,exitCode:O??1}),{exitCode:O,signal:V});return}if(B){A(X("Command timed out",{stdout:L,stderr:z,exitCode:O??1}),{exitCode:O,signal:V});return}if(V){let c=l.signals[V]??1;A(X(`Command exited due to signal ${V}`,{stdout:L,stderr:z,exitCode:O??c}),{exitCode:O,signal:V});return}let N=O??0;if(N===0)A(_("Command executed successfully",{stdout:L,stderr:z,exitCode:N}),{exitCode:N,signal:V});else A(X(`Command exited with code ${N}`,{stdout:L,stderr:z,exitCode:N}),{exitCode:N,signal:V})})()})})}async function Tq(q,J){let Z=q.args??[],$=[q.program,...Z].join(" ");if(S(q.program,Z)==="blocked")return X(`Command blocked by shell safety policy: ${$}`);if(J.abortSignal?.aborted)return X("Command cancelled");if(q.interactive===!0){if(!J.ptySessionStore)return X("PTY session store not available — interactive mode requires runner wiring");let{createPTYSession:F}=await import("./pty-ff59hy75.js"),H=await F({command:q.program,args:q.args,cwd:q.cwd??J.workingDir,env:R(J,q.env)}),K=H.pid;if(!K)return H.close(),X("Failed to start interactive session: no PID");if(J.ptySessionStore.add(K,H),J.processRegistry)J.processRegistry.add(K,{command:q.program,args:q.args??[],cwd:q.cwd??J.workingDir,interactive:!0});let j=()=>{if(J.ptySessionStore?.remove(K),J.processRegistry?.has(K))J.processRegistry.remove(K,{exitCode:H.exitCode??null})};if(!H.isRunning)j();else{let L=setInterval(()=>{if(!H.isRunning)clearInterval(L),j()},50);if(L.unref?.(),J.abortSignal){let z=()=>{clearInterval(L),H.close(),j()};J.abortSignal.addEventListener("abort",z,{once:!0})}}return _(`Started interactive session with PID ${K}`,{pid:K})}let W=q.cwd??J.workingDir,Q=R(J,q.env);return new Promise((F)=>{let H=!1,K,j=(z)=>{if(H)return;if(H=!0,K)clearTimeout(K);F(z)},L;if(J.abortSignal)J.abortSignal.addEventListener("abort",()=>{if(L)try{process.kill(-L,"SIGTERM")}catch{try{process.kill(L,"SIGTERM")}catch{}}},{once:!0});try{let z=m(q.program,Z,{cwd:W,env:Q,detached:!0,stdio:"ignore"});if(z.on("error",(B)=>{j(X(M(B)))}),z.pid){if(L=z.pid,z.on("exit",(B,Y)=>{if(J.processRegistry?.recordExitMetadata?.(z.pid,{exitCode:B,signal:Y}),J.processRegistry&&!I(z.pid,!0))J.processRegistry.remove(z.pid,{exitCode:B,signal:Y})}),J.processRegistry)J.processRegistry.add(z.pid,{command:q.program,args:Z,cwd:W,interactive:!1});z.unref(),j(_(`Spawned process with PID ${z.pid}`,{pid:z.pid}))}else K=setTimeout(()=>{j(X("Failed to spawn process: no PID returned"))},100)}catch(z){j(X(M(z)))}})}async function Pq(q,J){let Z=q.signal??"SIGTERM";try{let $=zq(Z);if($===void 0)return X(`Invalid signal: ${Z}`);if(J.processRegistry?.has(q.pid))Oq(q.pid,$);else process.kill(q.pid,$);let U=J.processRegistry;if(U?.waitForExit&&Lq($))await U.waitForExit(q.pid,2000);let W=typeof $==="number"?Z:$;return _(`Sent ${W} to process ${q.pid}`,{pid:q.pid,signal:W})}catch($){if($ instanceof Error&&"code"in $){let U=$;if(U.code==="ESRCH")return X(`Process not found: ${q.pid}`);if(U.code==="EPERM")return X(`Permission denied to kill process: ${q.pid}`)}return X(M($))}}var Kq=["SIGHUP","SIGINT","SIGQUIT","SIGILL","SIGTRAP","SIGABRT","SIGBUS","SIGFPE","SIGKILL","SIGUSR1","SIGSEGV","SIGUSR2","SIGPIPE","SIGALRM","SIGTERM","SIGSTKFLT","SIGCHLD","SIGCONT","SIGSTOP","SIGTSTP","SIGTTIN","SIGTTOU","SIGURG","SIGXCPU","SIGXFSZ","SIGVTALRM","SIGPROF","SIGWINCH","SIGIO","SIGPWR","SIGSYS"],g=new Set(["SIGCHLD","SIGCONT","SIGSTOP","SIGTSTP","SIGTTIN","SIGTTOU","SIGURG","SIGWINCH"]);function jq(q){return Kq.includes(q.toUpperCase())}function zq(q){if(/^\d+$/.test(q)){let Z=parseInt(q,10);if(Z>=1&&Z<=31)return Z;return}let J=q.toUpperCase();if(jq(J))return J;return}function Lq(q){if(typeof q==="number"){let J=Vq(q);if(!J)return!1;return!g.has(J)}return!g.has(q)}function Oq(q,J){try{if(q>0){process.kill(-q,J);return}}catch{}process.kill(q,J)}function Vq(q){for(let[J,Z]of Object.entries(l.signals))if(Z===q)return J;return}function Bq(q){return typeof q.getAll==="function"}async function kq(q,J){let Z=o(q),$=typeof Z?.includeExited==="boolean"?Z.includeExited:!1;if(!J.processRegistry)return X("Process registry not available");let U=J.processRegistry,W=typeof U.listProcesses==="function"?U.listProcesses({includeExited:$}):Bq(U)?U.getAll().map((Q)=>({pid:Q,command:null,args:[],cwd:null,interactive:!1,startedAt:new Date().toISOString(),runtimeMs:0,status:"running",exitCode:null,signal:null,endedAt:null})):[];return _(`Found ${W.length} tracked process${W.length===1?"":"es"}`,{processes:W,count:W.length})}async function yq(q,J){let Z=o(q);if(!Z)return X("Invalid input: expected an object");let $=typeof Z.pid==="number"?Z.pid:NaN;if(!$||$<=0||!Number.isInteger($))return X("Invalid PID: must be a positive integer");if($===process.pid)return X("Cannot wait on own process");let U=Z.timeoutMs;if(U!==void 0&&(typeof U!=="number"||Number.isNaN(U)))return X("Invalid timeoutMs: must be a number");let W=Z.timeout;if(W!==void 0&&(typeof W!=="number"||Number.isNaN(W)))return X("Invalid timeout: must be a number");let Q=Math.min(Math.max(0,U??W??30000),300000);if(!J.processRegistry)return X("Process registry not available");if(typeof J.processRegistry.waitForExit!=="function")return X("Process registry does not support waiting");let F=Date.now(),H=await J.processRegistry.waitForExit($,Q),K=Math.max(0,Date.now()-F);if(H.status==="not_found"||!H.process)return X(`Process not tracked: ${$}`,{pid:$,exited:!1,status:"not_found",timedOut:!1,waitedMs:K});let j=Yq(H,K);if(H.status==="running"||H.timedOut)return X(`Timed out waiting for process ${$}`,j);return _(`Process ${$} exited`,j)}function Yq(q,J){let Z=q.process,$=q.status==="exited"?"exited":"running";return{pid:q.pid,status:$,exited:$==="exited",timedOut:q.timedOut,waitedMs:J,command:Z.command,args:Z.args,cwd:Z.cwd,interactive:Z.interactive,startedAt:Z.startedAt,endedAt:Z.endedAt,runtimeMs:Z.runtimeMs,exitCode:Z.exitCode,signal:Z.signal}}function o(q){if(!q||typeof q!=="object")return;return q}async function Sq(q,J){if(!q||typeof q!=="object")return X("Invalid input: expected an object");let Z=q,$=typeof Z.pid==="number"?Z.pid:NaN,U=typeof Z.input==="string"?Z.input:void 0,W=typeof Z.timeout==="number"?Z.timeout:void 0;if(!$||$<=0||!Number.isInteger($))return X("Invalid PID: must be a positive integer");if($===process.pid)return X("Cannot write to own process");if(U===void 0)return X("Input must be a string");if(!J.ptySessionStore)return X("PTY session store not available");if(!J.ptySessionStore.has($))return X(`No interactive session found for PID ${$}. Use spawn with interactive=true first.`);let Q=J.ptySessionStore.get($);if(!Q)return X(`No interactive session found for PID ${$}. Use spawn with interactive=true first.`);if(!Q.isRunning)return X(`Process ${$} has exited (code: ${Q.exitCode??"unknown"})`);try{let F=Q.output.length;if(Q.write(U),W&&W>0){let L=Math.min(W,30000),z=Date.now()+L,B=50;while(Date.now()<z){if(await new Promise((Y)=>setTimeout(Y,50)),Q.output.length>F)break;if(!Q.isRunning)break}}let K=Q.output.slice(F),j=K.length>1e4?K.slice(-1e4):K;return _(`Wrote ${U.length} bytes to PID ${$}`,{output:j})}catch(F){let H=F instanceof Error?F.message:String(F);return X(`Failed to write to PID ${$}: ${H}`)}}class E extends Error{output;constructor(q,J){super(q);this.output=J;this.name="PTYTimeoutError"}}class T extends Error{output;constructor(q,J){super(q);this.output=J;this.name="PTYError"}}class P{static MAX_OUTPUT=10485760;_output="";_isRunning=!0;_exitCode;_exitPromise;_exitResolve;_pty;_dataDisposable;_exitDisposable;constructor(q){this._pty=q,this._exitPromise=new Promise((J)=>{this._exitResolve=J}),this._dataDisposable=q.onData((J)=>{if(this._output+=J,this._output.length>P.MAX_OUTPUT)this._output=this._output.slice(-P.MAX_OUTPUT)}),this._exitDisposable=q.onExit(({exitCode:J})=>{this._isRunning=!1,this._exitCode=J,this._exitResolve(J)})}write(q){if(!this._isRunning)throw new T("Cannot write to a closed PTY session");this._pty.write(q)}resize(q,J){if(!this._isRunning)throw new T("Cannot resize a closed PTY session");this._pty.resize(q,J)}async waitFor(q,J=5000){let Z=Date.now(),$=typeof q==="string"?new RegExp(Dq(q)):q;if($.test(this._output))return this._output;return new Promise((U,W)=>{let Q,F,H=()=>{if(Q)clearInterval(Q);if(F)clearTimeout(F)},K=()=>{if($.test(this._output))return H(),U(this._output),!0;if(!this._isRunning)return H(),W(new T(`Process exited before pattern was found: ${q}`,this._output)),!0;return!1};if(K())return;Q=setInterval(()=>{K()},10),F=setTimeout(()=>{H();let j=Date.now()-Z;W(new E(`Timeout (${j}ms) waiting for pattern: ${q}`,this._output))},J)})}async waitForExit(q=30000){if(!this._isRunning)return this._output;return new Promise((J,Z)=>{let $;$=setTimeout(()=>{Z(new E(`Timeout (${q}ms) waiting for process to exit`,this._output))},q),this._exitPromise.then(()=>{if($)clearTimeout($);J(this._output)}).catch(Z)})}kill(q){if(!this._isRunning)return;try{this._pty.kill(q)}catch{}}close(){if(this._isRunning)this.kill("SIGKILL"),this._isRunning=!1,this._exitResolve(-1);this._dataDisposable.dispose(),this._exitDisposable.dispose()}get output(){return this._output}get isRunning(){return this._isRunning}get pid(){return this._pty.pid}get exitCode(){return this._exitCode}get cols(){return this._pty.cols}get rows(){return this._pty.rows}}async function _q(q){let $=a.spawn(q.command,q.args??[],{name:"xterm-256color",cols:q.cols??80,rows:q.rows??24,cwd:q.cwd??process.cwd(),env:{...p(q.env),TERM:"xterm-256color"}});return new P($)}async function Iq(q){let{timeoutMs:J=30000,...Z}=q,$=await _q(Z);try{return{output:await $.waitForExit(J),exitCode:$.exitCode??0}}finally{$.close()}}function Dq(q){return q.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}
|
|
4
|
+
export{s as Ub,C as Vb,E as Wb,T as Xb,P as Yb,_q as Zb,Iq as _b,Cq as $b,p as ac,Rq as bc,Hq as cc,Tq as dc,Pq as ec,kq as fc,yq as gc,Sq as hc};
|