@genbounty/ailp 0.2.1 → 0.2.3
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 +5 -1
- package/dist/react.d.ts +2 -2
- package/dist/react.d.ts.map +1 -1
- package/dist/react.js +32 -24
- package/dist/react.js.map +1 -1
- package/package.json +2 -1
package/README.md
CHANGED
|
@@ -125,11 +125,13 @@ Import from `@genbounty/ailp/react` to keep React out of the core bundle.
|
|
|
125
125
|
One hook: memoized client + `assess` / `result` / `loading` / `error` / `reset`.
|
|
126
126
|
Configure with **environment variables** (Next.js `NEXT_PUBLIC_*`, Vite `VITE_*`) so you do not need `useMemo` or `createAilp` in every component.
|
|
127
127
|
|
|
128
|
+
Each call to `assess()` clears the previous `result` and `error` before the new request, so you do not need to call `reset()` between chat turns. Use `reset()` only when you want to clear the UI without assessing (for example when leaving a view).
|
|
129
|
+
|
|
128
130
|
```tsx
|
|
129
131
|
import { useAilp } from "@genbounty/ailp/react";
|
|
130
132
|
|
|
131
133
|
function ChatWidget() {
|
|
132
|
-
const { assess, result, loading, error
|
|
134
|
+
const { assess, result, loading, error } = useAilp();
|
|
133
135
|
|
|
134
136
|
async function handleSend(userMessage: string, llmOutput: string) {
|
|
135
137
|
await assess([{ role: "user", content: userMessage }], llmOutput);
|
|
@@ -160,6 +162,8 @@ function ChatWidget() {
|
|
|
160
162
|
|
|
161
163
|
Frameworks in env: comma-separated (`eu-ai-act,owasp-llm`) or a JSON array string (`["eu-ai-act","owasp-llm"]`).
|
|
162
164
|
|
|
165
|
+
**Next.js:** `NEXT_PUBLIC_*` values are baked in at **build time**. After changing `.env`, restart `next dev` (or rebuild). The variable name must be exactly `NEXT_PUBLIC_GENBOUNTY_PROGRAM_ID` (this package reads it as a static `process.env` reference so Next can inline it).
|
|
166
|
+
|
|
163
167
|
Partial override example:
|
|
164
168
|
|
|
165
169
|
```tsx
|
package/dist/react.d.ts
CHANGED
|
@@ -27,9 +27,9 @@ export interface UseAssessState {
|
|
|
27
27
|
loading: boolean;
|
|
28
28
|
/** Last error thrown by assess, or null. */
|
|
29
29
|
error: Error | null;
|
|
30
|
-
/** Submit messages and LLM output for assessment. Returns the response, or null on error. */
|
|
30
|
+
/** Submit messages and LLM output for assessment. Returns the response, or null on error. Clears any previous result and error before the request starts. */
|
|
31
31
|
assess: (messages: AilpMessage[], output: string, options?: AilpCallOptions) => Promise<AilpAssessResponse | null>;
|
|
32
|
-
/** Clear result and error
|
|
32
|
+
/** Clear result and error without starting an assessment (e.g. leaving a screen). */
|
|
33
33
|
reset: () => void;
|
|
34
34
|
}
|
|
35
35
|
export declare function useAssess(ailp: AilpFn): UseAssessState;
|
package/dist/react.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"react.d.ts","sourceRoot":"","sources":["../src/react.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"react.d.ts","sourceRoot":"","sources":["../src/react.ts"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,KAAK,EACV,kBAAkB,EAClB,eAAe,EAEf,WAAW,EACX,WAAW,EACZ,MAAM,YAAY,CAAC;AAuDpB;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,GAAG,WAAW,CAmCtF;AAaD,yEAAyE;AACzE,MAAM,MAAM,cAAc,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;AAElD,MAAM,MAAM,aAAa,GAAG,cAAc,GAAG;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAE9D;;;;;;;;GAQG;AACH,wBAAgB,OAAO,CAAC,OAAO,CAAC,EAAE,cAAc,GAAG,aAAa,CAsB/D;AAMD,MAAM,WAAW,cAAc;IAC7B,6DAA6D;IAC7D,MAAM,EAAE,kBAAkB,GAAG,IAAI,CAAC;IAClC,iDAAiD;IACjD,OAAO,EAAE,OAAO,CAAC;IACjB,4CAA4C;IAC5C,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IACpB,6JAA6J;IAC7J,MAAM,EAAE,CAAC,QAAQ,EAAE,WAAW,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,eAAe,KAAK,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,CAAC;IACnH,qFAAqF;IACrF,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,CAmCtD"}
|
package/dist/react.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
1
2
|
/**
|
|
2
3
|
* React hooks for AILP assess.
|
|
3
4
|
* Import from "@genbounty/ailp/react" to keep React out of the main bundle.
|
|
@@ -22,24 +23,28 @@ import { createAilp } from "./ailp.js";
|
|
|
22
23
|
// -------------------------------------------------------------------------
|
|
23
24
|
// Env helpers (Next.js NEXT_PUBLIC_*, Vite VITE_*)
|
|
24
25
|
// -------------------------------------------------------------------------
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
26
|
+
//
|
|
27
|
+
// Next.js (and similar) only inlines **static** `process.env.NEXT_PUBLIC_*` at
|
|
28
|
+
// build time. Dynamic access like `process.env[key]` is never replaced, so
|
|
29
|
+
// values are undefined in the browser — use explicit property names below.
|
|
30
|
+
function readNextPublicEnv() {
|
|
31
|
+
return {
|
|
32
|
+
baseUrl: process.env.NEXT_PUBLIC_AILP_BASE_URL,
|
|
33
|
+
programId: process.env.NEXT_PUBLIC_GENBOUNTY_PROGRAM_ID,
|
|
34
|
+
frameworks: process.env.NEXT_PUBLIC_AILP_FRAMEWORKS,
|
|
35
|
+
};
|
|
28
36
|
}
|
|
29
|
-
function
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
/* import.meta unavailable */
|
|
41
|
-
}
|
|
42
|
-
return undefined;
|
|
37
|
+
function readViteEnv() {
|
|
38
|
+
return {
|
|
39
|
+
baseUrl: import.meta.env.VITE_AILP_BASE_URL,
|
|
40
|
+
programId: import.meta.env.VITE_GENBOUNTY_PROGRAM_ID,
|
|
41
|
+
frameworks: import.meta.env.VITE_AILP_FRAMEWORKS,
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
function nonempty(v) {
|
|
45
|
+
if (v == null || v === "")
|
|
46
|
+
return undefined;
|
|
47
|
+
return v;
|
|
43
48
|
}
|
|
44
49
|
function parseFrameworksFromEnv(raw) {
|
|
45
50
|
if (raw == null || raw.trim() === "")
|
|
@@ -63,22 +68,24 @@ function parseFrameworksFromEnv(raw) {
|
|
|
63
68
|
* Throws if programId cannot be determined.
|
|
64
69
|
*/
|
|
65
70
|
export function resolveAilpConfigFromEnv(overrides) {
|
|
71
|
+
const next = readNextPublicEnv();
|
|
72
|
+
const vite = readViteEnv();
|
|
66
73
|
const baseUrl = overrides?.baseUrl ??
|
|
67
|
-
|
|
68
|
-
|
|
74
|
+
nonempty(next.baseUrl) ??
|
|
75
|
+
nonempty(vite.baseUrl) ??
|
|
69
76
|
"http://127.0.0.1:8000";
|
|
70
77
|
const programIdRaw = overrides?.programId ??
|
|
71
|
-
|
|
72
|
-
|
|
78
|
+
nonempty(next.programId) ??
|
|
79
|
+
nonempty(vite.programId);
|
|
73
80
|
if (programIdRaw == null || String(programIdRaw).trim() === "") {
|
|
74
|
-
throw new Error("AILP: missing programId. Set NEXT_PUBLIC_GENBOUNTY_PROGRAM_ID or VITE_GENBOUNTY_PROGRAM_ID,
|
|
81
|
+
throw new Error("AILP: missing programId. Set NEXT_PUBLIC_GENBOUNTY_PROGRAM_ID (or VITE_GENBOUNTY_PROGRAM_ID), pass programId to useAilp(), then restart the dev server so env is inlined (Next.js).");
|
|
75
82
|
}
|
|
76
83
|
let frameworks;
|
|
77
84
|
if (overrides?.frameworks != null) {
|
|
78
85
|
frameworks = overrides.frameworks;
|
|
79
86
|
}
|
|
80
87
|
else {
|
|
81
|
-
const raw =
|
|
88
|
+
const raw = nonempty(next.frameworks) ?? nonempty(vite.frameworks);
|
|
82
89
|
frameworks = parseFrameworksFromEnv(raw) ?? ["eu-ai-act"];
|
|
83
90
|
}
|
|
84
91
|
return {
|
|
@@ -122,8 +129,9 @@ export function useAssess(ailp) {
|
|
|
122
129
|
const [loading, setLoading] = useState(false);
|
|
123
130
|
const [error, setError] = useState(null);
|
|
124
131
|
const assess = useCallback(async (messages, output, callOptions) => {
|
|
125
|
-
|
|
132
|
+
setResult(null);
|
|
126
133
|
setError(null);
|
|
134
|
+
setLoading(true);
|
|
127
135
|
try {
|
|
128
136
|
const res = await ailp(messages, output, callOptions);
|
|
129
137
|
setResult(res);
|
package/dist/react.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"react.js","sourceRoot":"","sources":["../src/react.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAUvC,4EAA4E;AAC5E,mDAAmD;AACnD,4EAA4E;
|
|
1
|
+
{"version":3,"file":"react.js","sourceRoot":"","sources":["../src/react.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@genbounty/ailp",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.3",
|
|
4
4
|
"description": "TypeScript client for the AILP (AI Log Protocol) LLM compliance risk assessment API.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"exports": {
|
|
@@ -53,6 +53,7 @@
|
|
|
53
53
|
}
|
|
54
54
|
},
|
|
55
55
|
"devDependencies": {
|
|
56
|
+
"@types/node": "^20.0.0",
|
|
56
57
|
"@types/react": "^18.0.0",
|
|
57
58
|
"typescript": "^5.0.0"
|
|
58
59
|
}
|