ai-ax 0.6.0 → 0.7.0
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/client.d.ts +33 -2
- package/dist/index.js +1 -1
- package/dist/react.d.ts +1 -1
- package/dist/types.d.ts +8 -1
- package/package.json +1 -1
package/dist/client.d.ts
CHANGED
|
@@ -1,2 +1,33 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
1
|
+
import { Route } from "./types.js";
|
|
2
|
+
//#region src/client/stream.d.ts
|
|
3
|
+
interface StreamTool {
|
|
4
|
+
server: string;
|
|
5
|
+
name: string;
|
|
6
|
+
}
|
|
7
|
+
interface StreamItem {
|
|
8
|
+
text: string;
|
|
9
|
+
tools: StreamTool[];
|
|
10
|
+
error?: boolean;
|
|
11
|
+
}
|
|
12
|
+
interface StreamSend {
|
|
13
|
+
prompt: string;
|
|
14
|
+
path?: string;
|
|
15
|
+
model?: string;
|
|
16
|
+
messages?: any[];
|
|
17
|
+
headers?: Record<string, string>;
|
|
18
|
+
}
|
|
19
|
+
interface StreamUpdate {
|
|
20
|
+
items: StreamItem[];
|
|
21
|
+
delta: string;
|
|
22
|
+
raw: string;
|
|
23
|
+
}
|
|
24
|
+
declare const createStream: (endpoint?: string) => {
|
|
25
|
+
parse: (raw: string) => StreamItem[];
|
|
26
|
+
send: (input: StreamSend, update?: (u: StreamUpdate) => void) => Promise<StreamItem[]>;
|
|
27
|
+
};
|
|
28
|
+
//#endregion
|
|
29
|
+
//#region src/client.d.ts
|
|
30
|
+
declare const client: <T extends object>(ai: T, route?: Route) => T;
|
|
31
|
+
declare const hydrate: <T extends object>(ai: T, entries: Record<string, any>, wake?: (key: string, value: any) => any) => T;
|
|
32
|
+
//#endregion
|
|
33
|
+
export { type Route, type StreamItem, type StreamSend, type StreamTool, type StreamUpdate, client, createStream, hydrate };
|
package/dist/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import*as e from"yjs";const t=(t,n)=>{let r=t.ui??[],i=e=>r.some(t=>t.endsWith(`/`)?e.startsWith(t):e===t),a=new WeakMap,o=e=>{for(let t of e.changed.values())for(let e of t)if(e===null||!i(e))return!0;return!1};return{rows(e){let t=[];return n().forEach((n,r)=>r.startsWith(e)&&!r.slice(e.length).includes(`/`)&&t.push(n)),t.sort((e,t)=>(e?.pos??0)-(t?.pos??0))},history(r){let i=n();return a.has(i)||a.set(i,new e.UndoManager(i,{
|
|
1
|
+
import*as e from"yjs";const t=(t,n)=>{let r=t.ui??[],i=e=>r.some(t=>t.endsWith(`/`)?e.startsWith(t):e===t),a=new WeakMap,o=e=>{for(let t of e.changed.values())for(let e of t)if(e===null||!i(e))return!0;return!1};return{rows(e){let t=[];return n().forEach((n,r)=>r.startsWith(e)&&!r.slice(e.length).includes(`/`)&&t.push(n)),t.sort((e,t)=>(e?.pos??0)-(t?.pos??0))},history(r){let i=n();return a.has(i)||a.set(i,new e.UndoManager(i,{captureTransaction:o,...t.history,...r})),a.get(i)},snapshot(){let t=new e.Doc,r=t.getMap(`tree`);return t.transact(()=>n().forEach((t,n)=>!i(n)&&r.set(n,t instanceof e.AbstractType?t.clone():t))),e.encodeStateAsUpdate(t)}}},n=(t,n)=>{let r=null,i=()=>r??=new e.Doc,a=new WeakSet,o=new WeakMap,s=new Map,c=(e,l)=>{e&&(r=e),l&&o.set(i(),l);let u=i();if(a.has(u))return;a.add(u);let d=u.getMap(`act-req`),f=u.getMap(`act-res`),p=async e=>{let r=d.get(e),i=n.get(r?.name);if(!i||i.side!==t)return;d.delete(e);let a=o.get(u)??(e=>e());f.set(e,{value:await a(()=>(c(u),i.run(r.input)))})},m=e=>{let t=s.get(e);!t||!f.has(e)||(s.delete(e),t(f.get(e).value),f.delete(e))};d.observe(e=>e.keysChanged.forEach(p)),f.observe(e=>e.keysChanged.forEach(m))};return{open:c,data:(e=`tree`)=>i().getMap(e),call(e,r){let a=n.get(e);return a?a.side===t||a.side===`both`?(c(),Promise.resolve(a.run(r))):new Promise(t=>{let n=crypto.randomUUID();s.set(n,t),i().getMap(`act-req`).set(n,{name:e,input:r})}):Promise.reject(Error(`unknown action: ${e}`))}}},r=e=>!!e&&typeof e.parse==`function`,i=e=>r(e)?{value:e}:e,a=(e,t)=>r(e)&&t&&typeof t==`object`&&`value`in t?t.value:t,o=(e,t,n)=>{let r=[],o=(e,r)=>i=>{let a=t.get(e);return a?a(i,r,n()):r(i)};return{chain:o,missing:e=>()=>Promise.reject(Error(`not implemented: ${e}`)),describe(e,t){return t?(r=[...r,e],t(n()),r=r.slice(0,-1),n()):n()},define:t=>(s,...c)=>{let l=c.find(e=>typeof e==`string`)??``,u=c.find(e=>typeof e==`function`),d=c.find(e=>e&&typeof e==`object`),f=async e=>{let t=a(d,e),r=await u(t,n());return typeof r==`function`?r(t,n()):r&&r.default?r.default(t,n()):r},p=[...r,l].filter(Boolean).join(` `);return e.set(s,{name:s,description:p,side:t,input:i(d),run:o(s,f)}),n()}}},s=typeof window>`u`?`server`:`client`;function c(e={},r={}){let i=new Map,a=new Map,c=new Set,l=n(s,i),u=t(r,l.data),d=o(i,a,()=>m),f=async()=>{let e={};return l.data().forEach((t,n)=>e[n]=t),e},p={config:r,side:s,actions:i,action:d.define(`both`),client:d.define(`client`),server:d.define(`server`),describe:d.describe,abstract:e=>(c.add(e),m),override:(e,t)=>(a.set(e,t),m),data:l.data,open:(e,t)=>(l.open(e,t),m),call:l.call,rows:u.rows,scan:e=>{let t=[];return l.data().forEach((n,r)=>r.startsWith(e)&&t.push(n)),t},wipe:e=>{let t=[];l.data().forEach((n,r)=>r.startsWith(e)&&t.push(r)),t.forEach(e=>l.data().delete(e))},tx:(e,t)=>l.data().doc.transact(e,t),history:u.history,snapshot:u.snapshot};i.set(`get_tree`,{name:`get_tree`,description:r.tree??`Dump every key/value of the shared tree to observe the current state before acting`,side:`both`,run:d.chain(`get_tree`,f)});let m=new Proxy(p,{get(t,n){if(typeof n!=`string`||n in t)return t[n];if(i.has(n))return e=>l.call(n,e);if(c.has(n))return d.chain(n,d.missing(n));if(n!==`then`&&n!==`toJSON`)return l.data().get(n)??e[n]},set(e,t,n){return typeof t!=`string`||t in e?(e[t]=n,!0):(l.data().set(t,n),!0)},deleteProperty(e,t){return typeof t!=`string`||t in e||l.data().delete(t),!0}});return m}export{s as side,c as x};
|
package/dist/react.d.ts
CHANGED
package/dist/types.d.ts
CHANGED
|
@@ -26,6 +26,13 @@ interface Cookie {
|
|
|
26
26
|
apex: string;
|
|
27
27
|
services: string[];
|
|
28
28
|
}
|
|
29
|
+
interface Route {
|
|
30
|
+
room?: string;
|
|
31
|
+
path?: string;
|
|
32
|
+
host?: string;
|
|
33
|
+
party?: string;
|
|
34
|
+
synced?: () => void;
|
|
35
|
+
}
|
|
29
36
|
interface Config {
|
|
30
37
|
name?: string;
|
|
31
38
|
tree?: string;
|
|
@@ -89,4 +96,4 @@ type Ai<T extends object = {}> = T & {
|
|
|
89
96
|
snapshot(): Uint8Array;
|
|
90
97
|
};
|
|
91
98
|
//#endregion
|
|
92
|
-
export { ActionDef, Ai, Config, Cookie, Define, Grant, Own, Peer, Saved, Side };
|
|
99
|
+
export { ActionDef, Ai, Config, Cookie, Define, Grant, Own, Peer, Route, Saved, Side };
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ai-ax",
|
|
3
3
|
"author": "tseijp",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.7.0",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"description": "AI Agent Experience (AI/AX) library for Hono + Cloudflare. One act surface for both human UI/UX and LLM MCP tools, with authentication, authorization, realtime sync and Claude API relay.",
|
|
7
7
|
"keywords": [
|