@vpxa/aikit 0.1.358 → 0.1.360
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/package.json +1 -1
- package/packages/analyzers/dist/index.d.ts +1 -1
- package/packages/cli/dist/index.js +19 -19
- package/packages/cli/dist/init-C_WzeMTD.js +7 -0
- package/packages/cli/dist/{templates-Bu7dZtk_.js → templates-DUUaYk_d.js} +13 -12
- package/packages/core/dist/index.d.ts +43 -2
- package/packages/core/dist/index.js +1 -1
- package/packages/present/dist/annotation-layer.js +10 -10
- package/packages/server/dist/bin.js +1 -1
- package/packages/server/dist/index.js +1 -1
- package/packages/server/dist/observations-CfglxBMB.js +6 -0
- package/packages/server/dist/observations-CrQU_HVm.js +5 -0
- package/packages/server/dist/prelude-CNOjd5qt.js +2 -0
- package/packages/server/dist/prelude-Dki25eYn.js +1 -0
- package/packages/server/dist/sampling-B8NwOv_z.js +1 -0
- package/packages/server/dist/sampling-DOOgTH1B.js +2 -0
- package/packages/server/dist/{server-D5eu57oU.js → server-C2n9kQMF.js} +178 -183
- package/packages/server/dist/{server-D7gZ4K_H.js → server-CizTllz1.js} +178 -183
- package/packages/server/dist/{server-http-AarbD3gm.js → server-http-BaMUtb5Y.js} +1 -1
- package/packages/server/dist/{server-http-wnYmWFkC.js → server-http-Dd2uCMBi.js} +1 -1
- package/packages/server/dist/{server-stdio-BWoMqXU8.js → server-stdio-B5rk-PAI.js} +1 -1
- package/packages/server/dist/{server-stdio-CBGO6XiO.js → server-stdio-CtR4QNT3.js} +1 -1
- package/packages/tools/dist/index.js +69 -69
- package/scaffold/AUTOMATION-BOUNDARY-ANALYSIS.md +78 -0
- package/scaffold/dist/adapters/_shared.mjs +7 -6
- package/scaffold/dist/adapters/claude-code.mjs +7 -7
- package/scaffold/dist/adapters/claude-desktop.mjs +7 -0
- package/scaffold/dist/adapters/gemini.mjs +6 -6
- package/scaffold/dist/adapters/hermes.mjs +5 -5
- package/scaffold/dist/adapters/hooks.mjs +1 -1
- package/scaffold/dist/adapters/opencode.mjs +7 -7
- package/scaffold/dist/definitions/exec-hooks.mjs +1 -1
- package/scaffold/dist/definitions/platform-capabilities.mjs +1 -0
- package/scaffold/dist/definitions/protocols.mjs +7 -6
- package/scaffold/dist/definitions/skills/aikit.mjs +4 -4
- package/scaffold/general/hooks/scripts/_runtime.mjs +87 -15
- package/scaffold/general/hooks/scripts/freshness-signal.mjs +196 -0
- package/scaffold/general/hooks/scripts/privacy-guard.mjs +19 -6
- package/scaffold/general/hooks/scripts/scope-guard.mjs +160 -0
- package/scaffold/general/hooks/scripts/scout-guard.mjs +18 -14
- package/packages/cli/dist/init-CWLiK7bC.js +0 -7
- package/packages/server/dist/prelude-DetbWo8R.js +0 -1
- package/packages/server/dist/prelude-hfAEi93R.js +0 -2
- package/packages/server/dist/sampling-CWjnUevo.js +0 -2
- package/packages/server/dist/sampling-CnE3owSt.js +0 -1
- package/scaffold/general/hooks/scripts/post-edit-check.mjs +0 -36
- package/scaffold/general/hooks/scripts/pre-compact-save.mjs +0 -13
- package/scaffold/general/hooks/scripts/session-init.mjs +0 -85
- package/scaffold/general/hooks/scripts/session-learn.mjs +0 -53
- package/scaffold/general/hooks/scripts/session-observer.mjs +0 -77
- package/scaffold/general/hooks/scripts/subagent-context.mjs +0 -59
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import{createLogger as e}from"../../core/dist/index.js";import{randomUUID as t}from"node:crypto";const n=e(`observation-capture`),r=[`check`,`test_run`,`search`,`trace`],i=[/\bAuthorization\s*:\s*Bearer\s+[A-Za-z0-9\-._~+/]+=*/gi,/\bBearer\s+[A-Za-z0-9\-._~+/]+=*/g,/\b(?:sk|ghp|gho|glpat|xoxb|xoxp)-[A-Za-z0-9\-._]{20,}\b/g,/\b(?:token|key|secret|password|auth(?:orization)?)\s*[=:]\s*['"]?[^\s'"&]{8,}/gi,/\b(?:token|key|secret|password|auth(?:orization)?)=[^\s&]+/gi,/\b[A-Z][A-Z0-9_]*(?:PASSWORD|SECRET|TOKEN|AUTH)[A-Z0-9_]*\b\s*[=:]\s*['"]?[^\s'"]+/g,/\b[A-Z][A-Z0-9_]*KEY[A-Z0-9_]*\b\s*[=:]\s*['"]?[^\s'"]{8,}/g,/-----BEGIN [\w\s]+-----[\s\S]*?-----END [\w\s]+-----/g],a=new Set([`env`,`auth`,`config`]),o=2e3,s={enabled:!0,rateLimit:10,captureFrom:[...r],minContentLength:50};var c=class{maxPerMinute;timestamps=[];constructor(e){this.maxPerMinute=e}canCapture(e=Date.now()){return this.prune(e),this.timestamps.length<this.maxPerMinute}record(e=Date.now()){this.prune(e),this.timestamps.push(e)}setLimit(e){this.maxPerMinute=e,this.prune(Date.now())}prune(e){let t=e-6e4;this.timestamps=this.timestamps.filter(e=>e>t)}};function l(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function u(e){return typeof e==`string`?e:l(e)?[Array.isArray(e.content)?e.content.filter(e=>l(e)).map(e=>typeof e.text==`string`?e.text:``).filter(e=>e.length>0).join(`
|
|
3
|
+
`):``,e.structuredContent==null?``:JSON.stringify(e.structuredContent,null,2)].filter(e=>e.length>0).join(`
|
|
4
|
+
|
|
5
|
+
`):JSON.stringify(e)}function d(e,t=500){return e.length<=t?e:e.slice(0,t)}function f(e){let t=e.toLowerCase();return[...a].some(e=>t===e||t.includes(e))}function p(e){let t=e;for(let e of i)t=t.replace(e,`[REDACTED]`);return t.length>o&&(t=`${t.slice(0,o)}\n...[truncated]`),t}function m(e,t){let n=t?.args??{},r=[];switch(t?.workspace&&r.push(`workspace=${t.workspace}`),e){case`check`:typeof n.cwd==`string`&&r.push(`cwd=${n.cwd}`),Array.isArray(n.files)&&n.files.length>0&&r.push(`files=${n.files.join(`, `)}`);break;case`test_run`:typeof n.cwd==`string`&&r.push(`cwd=${n.cwd}`),typeof n.grep==`string`&&r.push(`grep=${n.grep}`),Array.isArray(n.files)&&n.files.length>0&&r.push(`files=${n.files.join(`, `)}`);break;case`search`:typeof n.query==`string`&&r.push(`query=${n.query}`);break;case`trace`:typeof n.start==`string`&&r.push(`start=${n.start}`),typeof n.direction==`string`&&r.push(`direction=${n.direction}`);break;default:break}return r.length>0?r.join(` | `):void 0}var h=class{stateStore;curatedStore;rateLimiter;config;constructor(e,t,n){this.stateStore=e,this.curatedStore=t,this.config={...s,...n,captureFrom:n?.captureFrom?[...n.captureFrom]:[...r]},this.rateLimiter=new c(this.config.rateLimit)}getConfig(){return{...this.config,captureFrom:[...this.config.captureFrom]}}updateConfig(e){this.config={...this.config,...e,captureFrom:e.captureFrom?[...e.captureFrom]:[...this.config.captureFrom]},e.rateLimit!==void 0&&this.rateLimiter.setLimit(e.rateLimit)}enable(){this.config.enabled=!0}disable(){this.config.enabled=!1}registerTool(e){this.config.captureFrom.includes(e)||this.config.captureFrom.push(e)}unregisterTool(e){this.config.captureFrom=this.config.captureFrom.filter(t=>t!==e)}async processToolResult(e,t,r){if(!this.config.enabled||f(e)||!this.config.captureFrom.includes(e)||!this.rateLimiter.canCapture())return null;let i=this.extractObservation(e,t,r);if(!i)return null;let a=p(i.content).trim();if(a.length<this.config.minContentLength)return null;let o={...i,content:d(a).trim()},s={...o,content:a};this.rateLimiter.record();try{await this.storeObservation(s)}catch(t){n.warn(`Failed to store observation`,{toolName:e,error:t instanceof Error?t.message:String(t)})}return o}extractObservation(e,t,n){let r=u(t);if(r.trim().length===0)return null;switch(e){case`check`:return this.extractFromCheck(t,r,n);case`test_run`:return this.extractFromTestRun(t,r,n);case`search`:return this.extractFromSearch(r,n);case`trace`:return this.extractFromTrace(r,n);default:return null}}extractFromCheck(e,t,n){return l(e)&&e.isError===!0||/\berror\b/i.test(t)||/failed/i.test(t)?this.buildObservation(`check`,`error`,t,n):null}extractFromTestRun(e,t,n){let r=l(e)&&l(e.structuredContent)?e.structuredContent:void 0,i=typeof r?.failedTests==`number`?r.failedTests:void 0;return l(e)&&e.isError===!0||typeof i==`number`&&i>0||/\bFAIL\b/.test(t)||/failed/i.test(t)?this.buildObservation(`test_run`,`test_failure`,t,n):null}extractFromSearch(e,t){if(!/\b(convention|pattern)\b/i.test(e))return null;let n=/\bconvention\b/i.test(e)?`convention`:`pattern`;return this.buildObservation(`search`,n,e,t)}extractFromTrace(e,t){return this.buildObservation(`trace`,`insight`,e,t)}buildObservation(e,n,r,i){return{id:t(),source:e,type:n,content:r,context:m(e,i),timestamp:new Date().toISOString()}}async storeObservation(e){let t=`Observation ${e.source} ${e.type} ${e.timestamp}`,n=[`Source: ${e.source}`,`Type: ${e.type}`,`Captured: ${e.timestamp}`,e.context?`Context: ${e.context}`:null,``,e.content].filter(e=>e!==null).join(`
|
|
6
|
+
`),r=await this.curatedStore.remember(t,n,`context`,[`observation`,`source-${e.source}`,`type-${e.type}`]);this.stateStore.memoryMetaCreate(r.path,`working`)}};export{s as DEFAULT_OBSERVATION_CONFIG,h as ObservationEngine};
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import{createLogger as e}from"../../core/dist/index.js";import{randomUUID as t}from"node:crypto";const n=e(`observation-capture`),r=[`check`,`test_run`,`search`,`trace`],i=[/\bAuthorization\s*:\s*Bearer\s+[A-Za-z0-9\-._~+/]+=*/gi,/\bBearer\s+[A-Za-z0-9\-._~+/]+=*/g,/\b(?:sk|ghp|gho|glpat|xoxb|xoxp)-[A-Za-z0-9\-._]{20,}\b/g,/\b(?:token|key|secret|password|auth(?:orization)?)\s*[=:]\s*['"]?[^\s'"&]{8,}/gi,/\b(?:token|key|secret|password|auth(?:orization)?)=[^\s&]+/gi,/\b[A-Z][A-Z0-9_]*(?:PASSWORD|SECRET|TOKEN|AUTH)[A-Z0-9_]*\b\s*[=:]\s*['"]?[^\s'"]+/g,/\b[A-Z][A-Z0-9_]*KEY[A-Z0-9_]*\b\s*[=:]\s*['"]?[^\s'"]{8,}/g,/-----BEGIN [\w\s]+-----[\s\S]*?-----END [\w\s]+-----/g],a=new Set([`env`,`auth`,`config`]),o=2e3,s={enabled:!0,rateLimit:10,captureFrom:[...r],minContentLength:50};var c=class{maxPerMinute;timestamps=[];constructor(e){this.maxPerMinute=e}canCapture(e=Date.now()){return this.prune(e),this.timestamps.length<this.maxPerMinute}record(e=Date.now()){this.prune(e),this.timestamps.push(e)}setLimit(e){this.maxPerMinute=e,this.prune(Date.now())}prune(e){let t=e-6e4;this.timestamps=this.timestamps.filter(e=>e>t)}};function l(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function u(e){return typeof e==`string`?e:l(e)?[Array.isArray(e.content)?e.content.filter(e=>l(e)).map(e=>typeof e.text==`string`?e.text:``).filter(e=>e.length>0).join(`
|
|
2
|
+
`):``,e.structuredContent==null?``:JSON.stringify(e.structuredContent,null,2)].filter(e=>e.length>0).join(`
|
|
3
|
+
|
|
4
|
+
`):JSON.stringify(e)}function d(e,t=500){return e.length<=t?e:e.slice(0,t)}function f(e){let t=e.toLowerCase();return[...a].some(e=>t===e||t.includes(e))}function p(e){let t=e;for(let e of i)t=t.replace(e,`[REDACTED]`);return t.length>o&&(t=`${t.slice(0,o)}\n...[truncated]`),t}function m(e,t){let n=t?.args??{},r=[];switch(t?.workspace&&r.push(`workspace=${t.workspace}`),e){case`check`:typeof n.cwd==`string`&&r.push(`cwd=${n.cwd}`),Array.isArray(n.files)&&n.files.length>0&&r.push(`files=${n.files.join(`, `)}`);break;case`test_run`:typeof n.cwd==`string`&&r.push(`cwd=${n.cwd}`),typeof n.grep==`string`&&r.push(`grep=${n.grep}`),Array.isArray(n.files)&&n.files.length>0&&r.push(`files=${n.files.join(`, `)}`);break;case`search`:typeof n.query==`string`&&r.push(`query=${n.query}`);break;case`trace`:typeof n.start==`string`&&r.push(`start=${n.start}`),typeof n.direction==`string`&&r.push(`direction=${n.direction}`);break;default:break}return r.length>0?r.join(` | `):void 0}var h=class{stateStore;curatedStore;rateLimiter;config;constructor(e,t,n){this.stateStore=e,this.curatedStore=t,this.config={...s,...n,captureFrom:n?.captureFrom?[...n.captureFrom]:[...r]},this.rateLimiter=new c(this.config.rateLimit)}getConfig(){return{...this.config,captureFrom:[...this.config.captureFrom]}}updateConfig(e){this.config={...this.config,...e,captureFrom:e.captureFrom?[...e.captureFrom]:[...this.config.captureFrom]},e.rateLimit!==void 0&&this.rateLimiter.setLimit(e.rateLimit)}enable(){this.config.enabled=!0}disable(){this.config.enabled=!1}registerTool(e){this.config.captureFrom.includes(e)||this.config.captureFrom.push(e)}unregisterTool(e){this.config.captureFrom=this.config.captureFrom.filter(t=>t!==e)}async processToolResult(e,t,r){if(!this.config.enabled||f(e)||!this.config.captureFrom.includes(e)||!this.rateLimiter.canCapture())return null;let i=this.extractObservation(e,t,r);if(!i)return null;let a=p(i.content).trim();if(a.length<this.config.minContentLength)return null;let o={...i,content:d(a).trim()},s={...o,content:a};this.rateLimiter.record();try{await this.storeObservation(s)}catch(t){n.warn(`Failed to store observation`,{toolName:e,error:t instanceof Error?t.message:String(t)})}return o}extractObservation(e,t,n){let r=u(t);if(r.trim().length===0)return null;switch(e){case`check`:return this.extractFromCheck(t,r,n);case`test_run`:return this.extractFromTestRun(t,r,n);case`search`:return this.extractFromSearch(r,n);case`trace`:return this.extractFromTrace(r,n);default:return null}}extractFromCheck(e,t,n){return l(e)&&e.isError===!0||/\berror\b/i.test(t)||/failed/i.test(t)?this.buildObservation(`check`,`error`,t,n):null}extractFromTestRun(e,t,n){let r=l(e)&&l(e.structuredContent)?e.structuredContent:void 0,i=typeof r?.failedTests==`number`?r.failedTests:void 0;return l(e)&&e.isError===!0||typeof i==`number`&&i>0||/\bFAIL\b/.test(t)||/failed/i.test(t)?this.buildObservation(`test_run`,`test_failure`,t,n):null}extractFromSearch(e,t){if(!/\b(convention|pattern)\b/i.test(e))return null;let n=/\bconvention\b/i.test(e)?`convention`:`pattern`;return this.buildObservation(`search`,n,e,t)}extractFromTrace(e,t){return this.buildObservation(`trace`,`insight`,e,t)}buildObservation(e,n,r,i){return{id:t(),source:e,type:n,content:r,context:m(e,i),timestamp:new Date().toISOString()}}async storeObservation(e){let t=`Observation ${e.source} ${e.type} ${e.timestamp}`,n=[`Source: ${e.source}`,`Type: ${e.type}`,`Captured: ${e.timestamp}`,e.context?`Context: ${e.context}`:null,``,e.content].filter(e=>e!==null).join(`
|
|
5
|
+
`),r=await this.curatedStore.remember(t,n,`context`,[`observation`,`source-${e.source}`,`type-${e.type}`]);this.stateStore.memoryMetaCreate(r.path,`working`)}};export{s as DEFAULT_OBSERVATION_CONFIG,h as ObservationEngine};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{n as e,t}from"./server-C2n9kQMF.js";export{t as buildPreludeInjection,e as generatePrelude};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as e}from"./server-C2n9kQMF.js";export{e as createSamplingClient};
|