@aiiware/aii 0.27.4 → 0.27.5
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 +19 -0
- package/bin/aii +960 -958
- package/bin/aii-telemetry-worker.mjs +27 -0
- package/package.json +2 -1
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* @aiiware/aii v0.27.5
|
|
4
|
+
*
|
|
5
|
+
* AI-powered CLI assistant for terminal productivity
|
|
6
|
+
*
|
|
7
|
+
* Copyright 2025-present AiiWare.com. All Rights Reserved.
|
|
8
|
+
* This software is proprietary and confidential.
|
|
9
|
+
*
|
|
10
|
+
* https://aiiware.com
|
|
11
|
+
*/
|
|
12
|
+
// Suppress DEP0040 punycode warning from grammy → node-fetch@2 → whatwg-url → tr46.
|
|
13
|
+
// This is a known upstream issue — grammy still depends on node-fetch v2 which uses
|
|
14
|
+
// the deprecated built-in punycode module. Safe to suppress until grammy updates.
|
|
15
|
+
const _origEmit = process.emit;
|
|
16
|
+
process.emit = function(ev, ...args) {
|
|
17
|
+
if (ev === 'warning' && args[0]?.name === 'DeprecationWarning' && args[0]?.code === 'DEP0040') return false;
|
|
18
|
+
return _origEmit.apply(this, [ev, ...args]);
|
|
19
|
+
};
|
|
20
|
+
import { createRequire } from 'node:module';
|
|
21
|
+
import { fileURLToPath } from 'node:url';
|
|
22
|
+
import { dirname } from 'node:path';
|
|
23
|
+
const require = createRequire(import.meta.url);
|
|
24
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
25
|
+
const __dirname = dirname(__filename);
|
|
26
|
+
|
|
27
|
+
import{workerData as B}from"node:worker_threads";import j from"node:https";import q from"node:http";import{randomUUID as P}from"node:crypto";import i from"node:fs";import h from"node:path";import{createRequire as C}from"node:module";var b=/^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/,R=()=>({schema_version:1,preference:"default",revision:0});var d;function Y(){if(process.platform!=="linux"&&process.platform!=="darwin")return!1;try{return d??=C(import.meta.url)("fs-native-extensions"),typeof d.tryLock=="function"&&typeof d.unlock=="function"}catch{return!1}}function y(t){return!process.getuid||t.uid===process.getuid()}function x(t){i.mkdirSync(t,{recursive:!0,mode:448});let e=i.lstatSync(t);if(!e.isDirectory()||e.isSymbolicLink()||!y(e))throw new Error("Unsafe telemetry directory");i.chmodSync(t,448)}function O(t,e){if(!Y())throw new Error("Telemetry locking unavailable");x(t);let r=i.openSync(h.join(t,"telemetry.lock"),i.constants.O_CREAT|i.constants.O_RDWR|i.constants.O_NOFOLLOW,384);try{let o=i.fstatSync(r);if(!o.isFile()||!y(o))throw new Error("Unsafe telemetry lock");if(i.fchmodSync(r,384),!d.tryLock(r))throw new Error("Telemetry policy lock busy");try{return e()}finally{d.unlock(r)}}finally{i.closeSync(r)}}function v(t){let e=h.join(t,"telemetry.json"),r;try{r=i.openSync(e,i.constants.O_RDONLY|i.constants.O_NOFOLLOW|i.constants.O_NONBLOCK)}catch(o){if(o.code==="ENOENT")return R();throw o}try{let o=i.fstatSync(r);if(!o.isFile()||!y(o)||o.size>8192||o.mode&63)throw new Error("Unsafe telemetry state");let c=i.readFileSync(r,"utf8"),l=Array.from(c.matchAll(/"((?:\\.|[^"\\])*)"\s*:/g),p=>JSON.parse('"'+p[1]+'"'));if(new Set(l).size!==l.length)throw new Error("Duplicate telemetry state key");let a=JSON.parse(c);if(!a||typeof a!="object"||Array.isArray(a))throw new Error("Invalid telemetry state");let n=a;if(Object.keys(n).some(p=>!["schema_version","preference","revision","installation_id","notice_version","receipt_attempted_revision"].includes(p))||n.schema_version!==1||!["default","on","off"].includes(String(n.preference))||!Number.isSafeInteger(n.revision)||Number(n.revision)<0||n.installation_id!==void 0&&(typeof n.installation_id!="string"||!b.test(n.installation_id))||n.notice_version!==void 0&&(typeof n.notice_version!="string"||!/^[a-z0-9-]{1,64}$/.test(n.notice_version))||n.receipt_attempted_revision!==void 0&&(!Number.isSafeInteger(n.receipt_attempted_revision)||Number(n.receipt_attempted_revision)<0||Number(n.receipt_attempted_revision)>Number(n.revision)))throw new Error("Invalid telemetry state");return n}finally{i.closeSync(r)}}var u="cli-telemetry-v2",_="https://telemetry.aiiware.com";function T(t){let e=t.AII_TELEMETRY;return e!==void 0&&e!==""&&e!=="on"}function A(t){return["CI","GITHUB_ACTIONS","GITLAB_CI","JENKINS_URL","BUILD_BUILDID","TEAMCITY_VERSION","CIRCLECI","TRAVIS","AII_INTERNAL_SUBAGENT"].some(e=>!!t[e]&&t[e]!=="false"&&t[e]!=="0")}function g(t){let e=new Int32Array(t,0,4);Atomics.store(e,2,1),new Uint8Array(t,1040).fill(0),Atomics.store(e,1,Atomics.load(e,0))}function w(t,e=32){let r=new Int32Array(t,0,4),o=[];for(;!Atomics.load(r,2)&&o.length<e;){let c=Atomics.load(r,1)>>>0;if(c===Atomics.load(r,0)>>>0)break;let l=c%256,a=Atomics.load(new Int32Array(t,16,256),l),n=new Uint8Array(t,1040+l*4096,4096);try{a>0&&a<=4096&&o.push(JSON.parse(new TextDecoder().decode(n.subarray(0,a))))}catch{}n.fill(0),Atomics.store(r,1,c+1|0)}return o}var I=/^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/,N=["event_id","installation_id","occurred_at","event","cli_version","os","arch","mode","backend","preference","notice_version"],D=["none","network","auth","config","rate_limit","provider","unknown"];function L(t){if(!t||typeof t!="object"||Array.isArray(t))return!1;let e=t;if(Object.values(e).some(o=>typeof o!="string"))return!1;let r=e.event==="request_completed"?["outcome","duration_bucket","error_category"]:e.event==="setup_failed"?["error_category"]:[];return Object.keys(e).length!==N.length+r.length||Object.keys(e).some(o=>![...N,...r].includes(o))||!I.test(e.event_id)||!I.test(e.installation_id)||!/^(0|[1-9]\d{0,7})\.(0|[1-9]\d{0,7})\.(0|[1-9]\d{0,7})$/.test(e.cli_version)||e.cli_version.length>32||!/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}Z$/.test(e.occurred_at)||!Number.isFinite(Date.parse(e.occurred_at))||new Date(e.occurred_at).toISOString().replace(/\.\d{3}Z$/,"Z")!==e.occurred_at||!["cli_started","setup_completed","setup_failed","request_completed"].includes(e.event)||!["macos","linux","windows","other"].includes(e.os)||!["arm64","x64","other"].includes(e.arch)||!["interactive","one_shot"].includes(e.mode)||!["cloud","byoc","ollama","unknown"].includes(e.backend)||!["enabled_by_default","enabled_explicitly"].includes(e.preference)||e.notice_version!==u?!1:e.event==="setup_failed"?["config","auth","network","provider","unknown"].includes(e.error_category):e.event!=="request_completed"?!0:["success","failure","cancelled"].includes(e.outcome)&&["lt1s","1to10s","10to60s","gt60s"].includes(e.duration_bucket)&&D.includes(e.error_category)&&(e.outcome==="failure"?e.error_category!=="none":e.error_category==="none")}var s=B,Q=s.testOrigin??_,m=new URL(Q);if(m.origin!==_&&!(s.testOrigin&&m.protocol==="http:"&&m.hostname==="127.0.0.1"))throw new Error("Invalid telemetry origin");var f,E=!1;function S(){s.queue&&g(s.queue),f?.destroy(),f=void 0}function U(t,e){let r=JSON.stringify(e);if(Buffer.byteLength(r)>65536)return;let c=(m.protocol==="https:"?j:q).request(new URL(t,m),{method:"POST",agent:!1,headers:{"Content-Type":"application/json","Content-Length":Buffer.byteLength(r)}},a=>{a.on("error",()=>{}),a.resume()});f=c;let l=setTimeout(()=>c.destroy(),2e3);c.once("error",()=>{}),c.once("close",()=>{clearTimeout(l),f===c&&(f=void 0)}),c.end(r)}function k(){if(T(process.env)||A(process.env)){S();return}try{O(s.directory,()=>{let t=v(s.directory);if(s.receipt){if(E||(E=!0,t.preference!=="off"||t.revision!==s.revision||t.receipt_attempted_revision!==s.revision||t.notice_version!==u))return;U("/v1/preferences",{state:"disabled_explicitly",notice_version:u,receipt_id:P(),timestamp:new Date().toISOString().slice(0,10)});return}if(t.preference==="off"||t.notice_version!==u||t.revision!==s.revision||t.installation_id!==s.installationId){S();return}if(f||!s.queue)return;let e=w(s.queue).filter(L);e.length&&U("/v1/events",{schema_version:1,events:e})})}catch{S(),E=!0}}k();s.receipt||setInterval(k,1e3);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aiiware/aii",
|
|
3
|
-
"version": "0.27.
|
|
3
|
+
"version": "0.27.5",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "🪼 AI-powered CLI assistant for terminal productivity",
|
|
6
6
|
"author": "AiiWare <support@aiiware.com>",
|
|
@@ -80,6 +80,7 @@
|
|
|
80
80
|
"zustand": "^4.5.0"
|
|
81
81
|
},
|
|
82
82
|
"optionalDependencies": {
|
|
83
|
+
"fs-native-extensions": "1.5.1",
|
|
83
84
|
"node-notifier": "^10.0.1"
|
|
84
85
|
},
|
|
85
86
|
"devDependencies": {
|