@ouispec/agent-react 0.1.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/LICENSE +21 -0
- package/README.md +13 -0
- package/dist/annotations/AnnotationRegistry.d.ts +20 -0
- package/dist/annotations/AnnotationRegistry.d.ts.map +1 -0
- package/dist/annotations/AnnotationRegistry.js +100 -0
- package/dist/annotations/AnnotationRegistry.js.map +1 -0
- package/dist/annotations/singleton.d.ts +7 -0
- package/dist/annotations/singleton.d.ts.map +1 -0
- package/dist/annotations/singleton.js +7 -0
- package/dist/annotations/singleton.js.map +1 -0
- package/dist/annotations/types.d.ts +22 -0
- package/dist/annotations/types.d.ts.map +1 -0
- package/dist/annotations/types.js +2 -0
- package/dist/annotations/types.js.map +1 -0
- package/dist/annotations/useViewAnnotation.d.ts +15 -0
- package/dist/annotations/useViewAnnotation.d.ts.map +1 -0
- package/dist/annotations/useViewAnnotation.js +42 -0
- package/dist/annotations/useViewAnnotation.js.map +1 -0
- package/dist/approvals/ApprovalCard.d.ts +54 -0
- package/dist/approvals/ApprovalCard.d.ts.map +1 -0
- package/dist/approvals/ApprovalCard.js +65 -0
- package/dist/approvals/ApprovalCard.js.map +1 -0
- package/dist/approvals/decision.d.ts +17 -0
- package/dist/approvals/decision.d.ts.map +1 -0
- package/dist/approvals/decision.js +25 -0
- package/dist/approvals/decision.js.map +1 -0
- package/dist/entity/AgentEntity.d.ts +58 -0
- package/dist/entity/AgentEntity.d.ts.map +1 -0
- package/dist/entity/AgentEntity.js +97 -0
- package/dist/entity/AgentEntity.js.map +1 -0
- package/dist/entity/AgentEntityComponent.d.ts +73 -0
- package/dist/entity/AgentEntityComponent.d.ts.map +1 -0
- package/dist/entity/AgentEntityComponent.js +134 -0
- package/dist/entity/AgentEntityComponent.js.map +1 -0
- package/dist/entity/asAgentEntity.d.ts +45 -0
- package/dist/entity/asAgentEntity.d.ts.map +1 -0
- package/dist/entity/asAgentEntity.js +51 -0
- package/dist/entity/asAgentEntity.js.map +1 -0
- package/dist/entity/defineAgentEntity.d.ts +54 -0
- package/dist/entity/defineAgentEntity.d.ts.map +1 -0
- package/dist/entity/defineAgentEntity.js +133 -0
- package/dist/entity/defineAgentEntity.js.map +1 -0
- package/dist/entity/index.d.ts +10 -0
- package/dist/entity/index.d.ts.map +1 -0
- package/dist/entity/index.js +6 -0
- package/dist/entity/index.js.map +1 -0
- package/dist/entity/useViewAnnotation.d.ts +64 -0
- package/dist/entity/useViewAnnotation.d.ts.map +1 -0
- package/dist/entity/useViewAnnotation.js +126 -0
- package/dist/entity/useViewAnnotation.js.map +1 -0
- package/dist/hooks/useFeedback.d.ts +7 -0
- package/dist/hooks/useFeedback.d.ts.map +1 -0
- package/dist/hooks/useFeedback.js +38 -0
- package/dist/hooks/useFeedback.js.map +1 -0
- package/dist/index.d.ts +12 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +11 -0
- package/dist/index.js.map +1 -0
- package/dist/provider/AgentProvider.d.ts +25 -0
- package/dist/provider/AgentProvider.d.ts.map +1 -0
- package/dist/provider/AgentProvider.js +800 -0
- package/dist/provider/AgentProvider.js.map +1 -0
- package/dist/provider/socketio.d.ts +8 -0
- package/dist/provider/socketio.d.ts.map +1 -0
- package/dist/provider/socketio.js +19 -0
- package/dist/provider/socketio.js.map +1 -0
- package/dist/provider/stored-messages.d.ts +16 -0
- package/dist/provider/stored-messages.d.ts.map +1 -0
- package/dist/provider/stored-messages.js +57 -0
- package/dist/provider/stored-messages.js.map +1 -0
- package/dist/provider/types.d.ts +158 -0
- package/dist/provider/types.d.ts.map +1 -0
- package/dist/provider/types.js +2 -0
- package/dist/provider/types.js.map +1 -0
- package/package.json +62 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/entity/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAE3D,YAAY,EAAE,wBAAwB,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AAChG,YAAY,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAClF,YAAY,EAAE,mBAAmB,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AACxF,YAAY,EAAE,wBAAwB,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export { AgentEntityComponent } from './AgentEntityComponent.js';
|
|
2
|
+
export { defineAgentEntity } from './defineAgentEntity.js';
|
|
3
|
+
export { AgentEntity } from './AgentEntity.js';
|
|
4
|
+
export { asAgentEntity } from './asAgentEntity.js';
|
|
5
|
+
export { useViewAnnotation } from './useViewAnnotation.js';
|
|
6
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/entity/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import type { EntityCapabilities, EntityDisplayContext, AgentAction, AgentCommand, AgentCommandResponse, UserObservation, EntityExecuteOptions, IntentResult, Unsubscribe } from '@ouispec/agent-core';
|
|
2
|
+
/**
|
|
3
|
+
* Options for the useViewAnnotation hook.
|
|
4
|
+
*/
|
|
5
|
+
export interface UseViewAnnotationOptions {
|
|
6
|
+
entity: {
|
|
7
|
+
type: string;
|
|
8
|
+
id: string;
|
|
9
|
+
};
|
|
10
|
+
intents?: string[];
|
|
11
|
+
displayContext: EntityDisplayContext;
|
|
12
|
+
capabilities?: EntityCapabilities;
|
|
13
|
+
metadata?: Record<string, unknown>;
|
|
14
|
+
onTargeted?: (action: AgentAction) => void;
|
|
15
|
+
onReleased?: () => void;
|
|
16
|
+
onExecuting?: (intentId: string, params: Record<string, unknown>) => void;
|
|
17
|
+
onExecutionComplete?: (intentId: string, result: IntentResult) => void;
|
|
18
|
+
onCommandReceived?: (command: AgentCommand) => AgentCommandResponse | Promise<AgentCommandResponse> | void;
|
|
19
|
+
onObserve?: (observation: UserObservation) => void;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Return value of useViewAnnotation — provides the ref callback and agent entity state/methods.
|
|
23
|
+
*/
|
|
24
|
+
export interface UseViewAnnotationReturn {
|
|
25
|
+
ref: (element: HTMLElement | null) => void;
|
|
26
|
+
isTargeted: boolean;
|
|
27
|
+
isExecuting: boolean;
|
|
28
|
+
currentAction: AgentAction | null;
|
|
29
|
+
execute: (intentId: string, params?: Record<string, unknown>, options?: EntityExecuteOptions) => Promise<IntentResult>;
|
|
30
|
+
emit: (signal: string, data?: unknown) => void;
|
|
31
|
+
subscribe: (event: string, handler: (data: unknown) => void) => Unsubscribe;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* useViewAnnotation — hook that registers a DOM element as an agent-addressable entity.
|
|
35
|
+
*
|
|
36
|
+
* This is the escape-hatch pattern for SVGs, portals, canvas overlays, or any case
|
|
37
|
+
* where class inheritance or wrapper components don't fit.
|
|
38
|
+
*
|
|
39
|
+
* Now delegates to the core AgentEntityBase for full lifecycle management.
|
|
40
|
+
*
|
|
41
|
+
* Example:
|
|
42
|
+
* ```tsx
|
|
43
|
+
* function CharacterCard({ character }) {
|
|
44
|
+
* const agent = useViewAnnotation({
|
|
45
|
+
* entity: { type: 'Character', id: character.id },
|
|
46
|
+
* intents: ['generate-clip', 'clone-voice'],
|
|
47
|
+
* displayContext: { label: character.name, image: character.thumbnailUrl },
|
|
48
|
+
* onTargeted: () => setHighlighted(true),
|
|
49
|
+
* onReleased: () => setHighlighted(false),
|
|
50
|
+
* });
|
|
51
|
+
*
|
|
52
|
+
* return (
|
|
53
|
+
* <div ref={agent.ref} className={agent.isTargeted ? 'targeted' : ''}>
|
|
54
|
+
* {character.name}
|
|
55
|
+
* <button onClick={() => agent.execute('generate-clip', { character: character.id })}>
|
|
56
|
+
* Generate
|
|
57
|
+
* </button>
|
|
58
|
+
* </div>
|
|
59
|
+
* );
|
|
60
|
+
* }
|
|
61
|
+
* ```
|
|
62
|
+
*/
|
|
63
|
+
export declare function useViewAnnotation(options: UseViewAnnotationOptions): UseViewAnnotationReturn;
|
|
64
|
+
//# sourceMappingURL=useViewAnnotation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useViewAnnotation.d.ts","sourceRoot":"","sources":["../../src/entity/useViewAnnotation.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EACV,kBAAkB,EAClB,oBAAoB,EACpB,WAAW,EACX,YAAY,EACZ,oBAAoB,EACpB,eAAe,EACf,oBAAoB,EACpB,YAAY,EACZ,WAAW,EACZ,MAAM,qBAAqB,CAAC;AAE7B;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;IACrC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,cAAc,EAAE,oBAAoB,CAAC;IACrC,YAAY,CAAC,EAAE,kBAAkB,CAAC;IAClC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,IAAI,CAAC;IAC3C,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;IACxB,WAAW,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;IAC1E,mBAAmB,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,KAAK,IAAI,CAAC;IACvE,iBAAiB,CAAC,EAAE,CAAC,OAAO,EAAE,YAAY,KAAK,oBAAoB,GAAG,OAAO,CAAC,oBAAoB,CAAC,GAAG,IAAI,CAAC;IAC3G,SAAS,CAAC,EAAE,CAAC,WAAW,EAAE,eAAe,KAAK,IAAI,CAAC;CACpD;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,GAAG,EAAE,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI,KAAK,IAAI,CAAC;IAC3C,UAAU,EAAE,OAAO,CAAC;IACpB,WAAW,EAAE,OAAO,CAAC;IACrB,aAAa,EAAE,WAAW,GAAG,IAAI,CAAC;IAClC,OAAO,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,EAAE,oBAAoB,KAAK,OAAO,CAAC,YAAY,CAAC,CAAC;IACvH,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IAC/C,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,KAAK,WAAW,CAAC;CAC7E;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,wBAAwB,GAAG,uBAAuB,CAoF5F"}
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
import { useRef, useCallback, useEffect, useState } from 'react';
|
|
2
|
+
import { AgentEntityBase, EntityRegistry, } from '@ouispec/agent-core';
|
|
3
|
+
import { annotationRegistry } from '../annotations/singleton.js';
|
|
4
|
+
/**
|
|
5
|
+
* useViewAnnotation — hook that registers a DOM element as an agent-addressable entity.
|
|
6
|
+
*
|
|
7
|
+
* This is the escape-hatch pattern for SVGs, portals, canvas overlays, or any case
|
|
8
|
+
* where class inheritance or wrapper components don't fit.
|
|
9
|
+
*
|
|
10
|
+
* Now delegates to the core AgentEntityBase for full lifecycle management.
|
|
11
|
+
*
|
|
12
|
+
* Example:
|
|
13
|
+
* ```tsx
|
|
14
|
+
* function CharacterCard({ character }) {
|
|
15
|
+
* const agent = useViewAnnotation({
|
|
16
|
+
* entity: { type: 'Character', id: character.id },
|
|
17
|
+
* intents: ['generate-clip', 'clone-voice'],
|
|
18
|
+
* displayContext: { label: character.name, image: character.thumbnailUrl },
|
|
19
|
+
* onTargeted: () => setHighlighted(true),
|
|
20
|
+
* onReleased: () => setHighlighted(false),
|
|
21
|
+
* });
|
|
22
|
+
*
|
|
23
|
+
* return (
|
|
24
|
+
* <div ref={agent.ref} className={agent.isTargeted ? 'targeted' : ''}>
|
|
25
|
+
* {character.name}
|
|
26
|
+
* <button onClick={() => agent.execute('generate-clip', { character: character.id })}>
|
|
27
|
+
* Generate
|
|
28
|
+
* </button>
|
|
29
|
+
* </div>
|
|
30
|
+
* );
|
|
31
|
+
* }
|
|
32
|
+
* ```
|
|
33
|
+
*/
|
|
34
|
+
export function useViewAnnotation(options) {
|
|
35
|
+
const [, forceUpdate] = useState(0);
|
|
36
|
+
const rerender = useCallback(() => forceUpdate(n => n + 1), []);
|
|
37
|
+
const bridgeRef = useRef(null);
|
|
38
|
+
const optionsRef = useRef(options);
|
|
39
|
+
optionsRef.current = options;
|
|
40
|
+
if (!bridgeRef.current) {
|
|
41
|
+
bridgeRef.current = new HookEntityBridge();
|
|
42
|
+
}
|
|
43
|
+
const bridge = bridgeRef.current;
|
|
44
|
+
bridge._sync(options.entity.type, options.entity.id, options.intents ?? [], options.displayContext, options.capabilities ?? {});
|
|
45
|
+
bridge._setCallbacks({
|
|
46
|
+
onTargeted: options.onTargeted,
|
|
47
|
+
onReleased: options.onReleased,
|
|
48
|
+
onExecuting: options.onExecuting,
|
|
49
|
+
onExecutionComplete: options.onExecutionComplete,
|
|
50
|
+
onCommandReceived: options.onCommandReceived,
|
|
51
|
+
onObserve: options.onObserve,
|
|
52
|
+
});
|
|
53
|
+
bridge._setRerender(rerender);
|
|
54
|
+
useEffect(() => {
|
|
55
|
+
bridge.register();
|
|
56
|
+
return () => bridge.unregister();
|
|
57
|
+
}, []);
|
|
58
|
+
// Register with annotation registry so collectContext() includes metadata
|
|
59
|
+
useEffect(() => {
|
|
60
|
+
const annotationId = `annotation-${options.entity.type}-${options.entity.id}`;
|
|
61
|
+
const unregister = annotationRegistry.register({
|
|
62
|
+
id: annotationId,
|
|
63
|
+
element: null,
|
|
64
|
+
options: {
|
|
65
|
+
entity: options.entity,
|
|
66
|
+
intents: options.intents,
|
|
67
|
+
displayContext: options.displayContext,
|
|
68
|
+
metadata: options.metadata,
|
|
69
|
+
},
|
|
70
|
+
visible: true,
|
|
71
|
+
});
|
|
72
|
+
return () => unregister();
|
|
73
|
+
}, [options.entity.type, options.entity.id, options.metadata]);
|
|
74
|
+
useEffect(() => {
|
|
75
|
+
const newKey = `${options.entity.type}::${options.entity.id}`;
|
|
76
|
+
if (bridge._prevKey && bridge._prevKey !== newKey) {
|
|
77
|
+
bridge.unregister();
|
|
78
|
+
bridge._sync(options.entity.type, options.entity.id, options.intents ?? [], options.displayContext, options.capabilities ?? {});
|
|
79
|
+
bridge.register();
|
|
80
|
+
}
|
|
81
|
+
bridge._prevKey = newKey;
|
|
82
|
+
}, [options.entity.type, options.entity.id]);
|
|
83
|
+
const refCallback = useCallback((element) => {
|
|
84
|
+
EntityRegistry.instance.updateElement(optionsRef.current.entity.type, optionsRef.current.entity.id, element);
|
|
85
|
+
}, []);
|
|
86
|
+
return {
|
|
87
|
+
ref: refCallback,
|
|
88
|
+
isTargeted: bridge.isTargeted,
|
|
89
|
+
isExecuting: bridge.isExecuting,
|
|
90
|
+
currentAction: bridge.currentAction,
|
|
91
|
+
execute: (intentId, params, opts) => bridge.execute(intentId, params, opts),
|
|
92
|
+
emit: (signal, data) => bridge.emit(signal, data),
|
|
93
|
+
subscribe: (event, handler) => bridge.subscribe(event, handler),
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
class HookEntityBridge extends AgentEntityBase {
|
|
97
|
+
_type = '';
|
|
98
|
+
_id = '';
|
|
99
|
+
_intents = [];
|
|
100
|
+
_display = { label: '' };
|
|
101
|
+
_caps = {};
|
|
102
|
+
_callbacks = {};
|
|
103
|
+
_rerender = null;
|
|
104
|
+
_prevKey = '';
|
|
105
|
+
get entityType() { return this._type; }
|
|
106
|
+
get entityId() { return this._id; }
|
|
107
|
+
get intents() { return this._intents; }
|
|
108
|
+
get displayContext() { return this._display; }
|
|
109
|
+
get capabilities() { return this._caps; }
|
|
110
|
+
_sync(type, id, intents, display, caps) {
|
|
111
|
+
this._type = type;
|
|
112
|
+
this._id = id;
|
|
113
|
+
this._intents = intents;
|
|
114
|
+
this._display = display;
|
|
115
|
+
this._caps = caps;
|
|
116
|
+
}
|
|
117
|
+
_setCallbacks(callbacks) { this._callbacks = callbacks; }
|
|
118
|
+
_setRerender(fn) { this._rerender = fn; }
|
|
119
|
+
onTargeted(action) { this._callbacks.onTargeted?.(action); this._rerender?.(); }
|
|
120
|
+
onReleased() { this._callbacks.onReleased?.(); this._rerender?.(); }
|
|
121
|
+
onExecuting(intentId, params) { this._callbacks.onExecuting?.(intentId, params); this._rerender?.(); }
|
|
122
|
+
onExecutionComplete(intentId, result) { this._callbacks.onExecutionComplete?.(intentId, result); this._rerender?.(); }
|
|
123
|
+
onCommandReceived(command) { return this._callbacks.onCommandReceived?.(command); }
|
|
124
|
+
onObserve(observation) { this._callbacks.onObserve?.(observation); }
|
|
125
|
+
}
|
|
126
|
+
//# sourceMappingURL=useViewAnnotation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useViewAnnotation.js","sourceRoot":"","sources":["../../src/entity/useViewAnnotation.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export interface FeedbackActions {
|
|
2
|
+
thumbsUp: (turnId: string, detail?: string) => void;
|
|
3
|
+
thumbsDown: (turnId: string, detail?: string) => void;
|
|
4
|
+
recordImplicit: (turnId: string, signal: 'positive' | 'negative', detail?: string) => void;
|
|
5
|
+
}
|
|
6
|
+
export declare function useFeedback(): FeedbackActions;
|
|
7
|
+
//# sourceMappingURL=useFeedback.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useFeedback.d.ts","sourceRoot":"","sources":["../../src/hooks/useFeedback.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IACpD,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IACtD,cAAc,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,GAAG,UAAU,EAAE,MAAM,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;CAC5F;AAED,wBAAgB,WAAW,IAAI,eAAe,CAsC7C"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { useCallback } from 'react';
|
|
2
|
+
import { useAgent } from '../provider/AgentProvider.js';
|
|
3
|
+
export function useFeedback() {
|
|
4
|
+
useAgent(); // validate agent context is available
|
|
5
|
+
const thumbsUp = useCallback((turnId, detail) => {
|
|
6
|
+
const record = {
|
|
7
|
+
turnId,
|
|
8
|
+
type: 'explicit',
|
|
9
|
+
signal: 'positive',
|
|
10
|
+
detail,
|
|
11
|
+
timestamp: Date.now(),
|
|
12
|
+
};
|
|
13
|
+
// Emit to learning surface if available
|
|
14
|
+
window.dispatchEvent(new CustomEvent('agent:feedback', { detail: record }));
|
|
15
|
+
}, []);
|
|
16
|
+
const thumbsDown = useCallback((turnId, detail) => {
|
|
17
|
+
const record = {
|
|
18
|
+
turnId,
|
|
19
|
+
type: 'explicit',
|
|
20
|
+
signal: 'negative',
|
|
21
|
+
detail,
|
|
22
|
+
timestamp: Date.now(),
|
|
23
|
+
};
|
|
24
|
+
window.dispatchEvent(new CustomEvent('agent:feedback', { detail: record }));
|
|
25
|
+
}, []);
|
|
26
|
+
const recordImplicit = useCallback((turnId, signal, detail) => {
|
|
27
|
+
const record = {
|
|
28
|
+
turnId,
|
|
29
|
+
type: 'implicit',
|
|
30
|
+
signal,
|
|
31
|
+
detail,
|
|
32
|
+
timestamp: Date.now(),
|
|
33
|
+
};
|
|
34
|
+
window.dispatchEvent(new CustomEvent('agent:feedback', { detail: record }));
|
|
35
|
+
}, []);
|
|
36
|
+
return { thumbsUp, thumbsDown, recordImplicit };
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=useFeedback.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useFeedback.js","sourceRoot":"","sources":["../../src/hooks/useFeedback.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAEpC,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AAQxD,MAAM,UAAU,WAAW;IACzB,QAAQ,EAAE,CAAC,CAAC,sCAAsC;IAElD,MAAM,QAAQ,GAAG,WAAW,CAAC,CAAC,MAAc,EAAE,MAAe,EAAE,EAAE;QAC/D,MAAM,MAAM,GAAmB;YAC7B,MAAM;YACN,IAAI,EAAE,UAAU;YAChB,MAAM,EAAE,UAAU;YAClB,MAAM;YACN,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;SACtB,CAAC;QACF,wCAAwC;QACxC,MAAM,CAAC,aAAa,CAAC,IAAI,WAAW,CAAC,gBAAgB,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;IAC9E,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,UAAU,GAAG,WAAW,CAAC,CAAC,MAAc,EAAE,MAAe,EAAE,EAAE;QACjE,MAAM,MAAM,GAAmB;YAC7B,MAAM;YACN,IAAI,EAAE,UAAU;YAChB,MAAM,EAAE,UAAU;YAClB,MAAM;YACN,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;SACtB,CAAC;QACF,MAAM,CAAC,aAAa,CAAC,IAAI,WAAW,CAAC,gBAAgB,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;IAC9E,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,cAAc,GAAG,WAAW,CAAC,CAAC,MAAc,EAAE,MAA+B,EAAE,MAAe,EAAE,EAAE;QACtG,MAAM,MAAM,GAAmB;YAC7B,MAAM;YACN,IAAI,EAAE,UAAU;YAChB,MAAM;YACN,MAAM;YACN,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;SACtB,CAAC;QACF,MAAM,CAAC,aAAa,CAAC,IAAI,WAAW,CAAC,gBAAgB,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;IAC9E,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,cAAc,EAAE,CAAC;AAClD,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export { AgentProvider, useAgent } from './provider/AgentProvider.js';
|
|
2
|
+
export { useFeedback } from './hooks/useFeedback.js';
|
|
3
|
+
export { storedToAgentMessages } from './provider/stored-messages.js';
|
|
4
|
+
export { ApprovalCard } from './approvals/ApprovalCard.js';
|
|
5
|
+
export type { ApprovalCardProps, ApprovalCardParts, ApprovalCardFrameProps, ApprovalCardButtonProps, ApprovalCardLabels, } from './approvals/ApprovalCard.js';
|
|
6
|
+
export type { AgentApprovalRequest, AgentClientConfig, AgentContextValue, AgentHistoryState, AgentMessage, AgentToolCallState, AgentDebugState, DebugLogEntry, DebugLogLevel, DebugLogNamespace, } from './provider/types.js';
|
|
7
|
+
export { AgentEntityComponent, defineAgentEntity, AgentEntity, asAgentEntity, useViewAnnotation, } from './entity/index.js';
|
|
8
|
+
export type { AgentEntityRenderContext, DefineAgentEntityConfig, AgentEntityProps, AgentEntityChildContext, AsAgentEntityConfig, InjectedAgentEntityProps, UseViewAnnotationOptions, UseViewAnnotationReturn, } from './entity/index.js';
|
|
9
|
+
export { AnnotationRegistry } from './annotations/AnnotationRegistry.js';
|
|
10
|
+
export type { ViewAnnotationOptions, AnnotationEntry } from './annotations/types.js';
|
|
11
|
+
export { annotationRegistry } from './annotations/singleton.js';
|
|
12
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAEtE,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AAEtE,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,YAAY,EACV,iBAAiB,EACjB,iBAAiB,EACjB,sBAAsB,EACtB,uBAAuB,EACvB,kBAAkB,GACnB,MAAM,6BAA6B,CAAC;AAErC,YAAY,EACV,oBAAoB,EACpB,iBAAiB,EACjB,iBAAiB,EACjB,iBAAiB,EACjB,YAAY,EACZ,kBAAkB,EAClB,eAAe,EACf,aAAa,EACb,aAAa,EACb,iBAAiB,GAClB,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EACL,oBAAoB,EACpB,iBAAiB,EACjB,WAAW,EACX,aAAa,EACb,iBAAiB,GAClB,MAAM,mBAAmB,CAAC;AAE3B,YAAY,EACV,wBAAwB,EACxB,uBAAuB,EACvB,gBAAgB,EAChB,uBAAuB,EACvB,mBAAmB,EACnB,wBAAwB,EACxB,wBAAwB,EACxB,uBAAuB,GACxB,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AACzE,YAAY,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACrF,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export { AgentProvider, useAgent } from './provider/AgentProvider.js';
|
|
2
|
+
export { useFeedback } from './hooks/useFeedback.js';
|
|
3
|
+
export { storedToAgentMessages } from './provider/stored-messages.js';
|
|
4
|
+
// Approvals (ADR-0228): the card where the person approves an irreversible call.
|
|
5
|
+
export { ApprovalCard } from './approvals/ApprovalCard.js';
|
|
6
|
+
// Entity integration patterns
|
|
7
|
+
export { AgentEntityComponent, defineAgentEntity, AgentEntity, asAgentEntity, useViewAnnotation, } from './entity/index.js';
|
|
8
|
+
// Annotation registry for view annotations
|
|
9
|
+
export { AnnotationRegistry } from './annotations/AnnotationRegistry.js';
|
|
10
|
+
export { annotationRegistry } from './annotations/singleton.js';
|
|
11
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAEtE,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AACtE,iFAAiF;AACjF,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAsB3D,8BAA8B;AAC9B,OAAO,EACL,oBAAoB,EACpB,iBAAiB,EACjB,WAAW,EACX,aAAa,EACb,iBAAiB,GAClB,MAAM,mBAAmB,CAAC;AAa3B,2CAA2C;AAC3C,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AAEzE,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { AgentClientConfig } from '@ouispec/agent-core';
|
|
3
|
+
import type { AgentContextValue } from './types.js';
|
|
4
|
+
/**
|
|
5
|
+
* AgentProvider — turnkey provider that handles the complete agent lifecycle.
|
|
6
|
+
*
|
|
7
|
+
* The platform provides:
|
|
8
|
+
* - createConversation() / sendMessage() — API callbacks
|
|
9
|
+
* - realtime: { url, getToken } — where and how to connect
|
|
10
|
+
*
|
|
11
|
+
* The SDK owns:
|
|
12
|
+
* - Socket.IO connection lifecycle (connect, reconnect, auth)
|
|
13
|
+
* - Room subscription tied to active turns, kept across reconnects
|
|
14
|
+
* - All event parsing (agent:* protocol)
|
|
15
|
+
* - Streaming state, message history, keyboard shortcuts
|
|
16
|
+
*
|
|
17
|
+
* UI actions are not dispatched here: the client's OUI surface runtime answers
|
|
18
|
+
* them on the same socket (ADR-0209).
|
|
19
|
+
*/
|
|
20
|
+
export declare function AgentProvider({ config, children }: {
|
|
21
|
+
config: AgentClientConfig;
|
|
22
|
+
children: React.ReactNode;
|
|
23
|
+
}): React.FunctionComponentElement<React.ProviderProps<AgentContextValue | null>>;
|
|
24
|
+
export declare function useAgent(): AgentContextValue;
|
|
25
|
+
//# sourceMappingURL=AgentProvider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AgentProvider.d.ts","sourceRoot":"","sources":["../../src/provider/AgentProvider.ts"],"names":[],"mappings":"AAAA,OAAO,KAA8E,MAAM,OAAO,CAAC;AACnG,OAAO,KAAK,EACV,iBAAiB,EAKlB,MAAM,qBAAqB,CAAC;AAW7B,OAAO,KAAK,EAEV,iBAAiB,EAOlB,MAAM,YAAY,CAAC;AA0EpB;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,aAAa,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE;IAAE,MAAM,EAAE,iBAAiB,CAAC;IAAC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAAE,iFA6uB3G;AAED,wBAAgB,QAAQ,IAAI,iBAAiB,CAI5C"}
|