openxiangda 2.66.0 → 2.67.1

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.
Files changed (51) hide show
  1. package/dist/agent.d.ts +6 -0
  2. package/dist/agent.d.ts.map +1 -0
  3. package/dist/agent.js +4 -0
  4. package/dist/agent.js.map +1 -0
  5. package/dist/browser/admin-shell.d.ts +1 -1
  6. package/dist/browser/agent-client.d.ts +16 -0
  7. package/dist/browser/agent-client.d.ts.map +1 -0
  8. package/dist/browser/agent-client.js +54 -0
  9. package/dist/browser/agent-client.js.map +1 -0
  10. package/dist/browser/agent-conversation.d.ts +71 -0
  11. package/dist/browser/agent-conversation.d.ts.map +1 -0
  12. package/dist/browser/agent-conversation.js +391 -0
  13. package/dist/browser/agent-conversation.js.map +1 -0
  14. package/dist/browser/agent-hooks.d.ts +31 -0
  15. package/dist/browser/agent-hooks.d.ts.map +1 -0
  16. package/dist/browser/agent-hooks.js +62 -0
  17. package/dist/browser/agent-hooks.js.map +1 -0
  18. package/dist/browser/agent-protocol.d.ts +131 -0
  19. package/dist/browser/agent-protocol.d.ts.map +1 -0
  20. package/dist/browser/agent-protocol.js +2 -0
  21. package/dist/browser/agent-protocol.js.map +1 -0
  22. package/dist/browser/agent-stream.d.ts +7 -0
  23. package/dist/browser/agent-stream.d.ts.map +1 -0
  24. package/dist/browser/agent-stream.js +83 -0
  25. package/dist/browser/agent-stream.js.map +1 -0
  26. package/dist/browser/components/resource/SurfaceFields.d.ts +1 -1
  27. package/dist/browser/components/resource/useResourceFormDrafts.d.ts.map +1 -1
  28. package/dist/browser/components/workflow/StandardWorkflowPages.d.ts +1 -1
  29. package/dist/browser/mobile.d.ts +2 -2
  30. package/dist/browser/platform-client.d.ts +3 -0
  31. package/dist/browser/platform-client.d.ts.map +1 -1
  32. package/dist/browser/platform-client.js +88 -0
  33. package/dist/browser/platform-client.js.map +1 -1
  34. package/dist/browser/standard-user-surfaces.d.ts +1 -1
  35. package/dist/nest.d.ts +1 -1
  36. package/dist/nest.d.ts.map +1 -1
  37. package/dist/nest.js +1 -1
  38. package/dist/nest.js.map +1 -1
  39. package/documentation/AGENTS.md +1 -1
  40. package/documentation/application-agents.md +72 -0
  41. package/documentation/getting-started.md +10 -9
  42. package/documentation/manifest.json +8 -2
  43. package/package.json +27 -17
  44. package/releases/2.66.1.json +29 -0
  45. package/releases/2.66.2.json +29 -0
  46. package/releases/2.67.0.json +33 -0
  47. package/releases/2.67.1.json +35 -0
  48. package/skills/manifest.json +1 -1
  49. package/skills/openxiangda-v2/SKILL.md +6 -5
  50. package/skills/openxiangda-v2/references/application-agents.md +72 -0
  51. package/skills/openxiangda-v2/references/getting-started.md +10 -9
@@ -0,0 +1,6 @@
1
+ /** Application-scoped assistant client/hooks. No engine or provider administration API. */
2
+ export { createApplicationAgentClient, type ApplicationAgentClient } from './browser/agent-client';
3
+ export { useAgents, useAgentConversation } from './browser/agent-hooks';
4
+ export type { AgentConversationController, AgentConversationState, AgentPendingMutation, AgentMutationKind } from './browser/agent-conversation';
5
+ export type { ApplicationAgent, AgentConversation, AgentConversationPage, AgentConversationSnapshot, AgentRun, AgentMessage, AgentTool, AgentInteraction, AgentInteractionAcceptance, AgentReconciliation, AgentUpdatedEvent, } from './browser/agent-protocol';
6
+ //# sourceMappingURL=agent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"AAAA,2FAA2F;AAC3F,OAAO,EAAE,4BAA4B,EAAE,KAAK,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AACnG,OAAO,EAAE,SAAS,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AACxE,YAAY,EAAE,2BAA2B,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjJ,YAAY,EACV,gBAAgB,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,yBAAyB,EAAE,QAAQ,EAC/F,YAAY,EAAE,SAAS,EAAE,gBAAgB,EAAE,0BAA0B,EAAE,mBAAmB,EAAE,iBAAiB,GAC9G,MAAM,0BAA0B,CAAC"}
package/dist/agent.js ADDED
@@ -0,0 +1,4 @@
1
+ /** Application-scoped assistant client/hooks. No engine or provider administration API. */
2
+ export { createApplicationAgentClient } from './browser/agent-client';
3
+ export { useAgents, useAgentConversation } from './browser/agent-hooks';
4
+ //# sourceMappingURL=agent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent.js","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"AAAA,2FAA2F;AAC3F,OAAO,EAAE,4BAA4B,EAA+B,MAAM,wBAAwB,CAAC;AACnG,OAAO,EAAE,SAAS,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC"}
@@ -67,6 +67,6 @@ export declare class AdminShellErrorBoundary extends Component<{
67
67
  static getDerivedStateFromError(): {
68
68
  failed: boolean;
69
69
  };
70
- render(): string | number | bigint | boolean | Iterable<ReactNode> | Promise<string | number | bigint | boolean | import("react").ReactPortal | import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>> | Iterable<ReactNode> | null | undefined> | import("react/jsx-runtime").JSX.Element | null | undefined;
70
+ render(): string | number | bigint | boolean | import("react/jsx-runtime").JSX.Element | Iterable<ReactNode> | Promise<string | number | bigint | boolean | import("react").ReactPortal | import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>> | Iterable<ReactNode> | null | undefined> | null | undefined;
71
71
  }
72
72
  //# sourceMappingURL=admin-shell.d.ts.map
@@ -0,0 +1,16 @@
1
+ import { AgentConversationController } from './agent-conversation';
2
+ import type { AgentConversationPage, ApplicationAgent } from './agent-protocol';
3
+ export interface ApplicationAgentClient {
4
+ readonly scope: string;
5
+ agents(signal?: AbortSignal): Promise<ApplicationAgent[]>;
6
+ conversations(agentCode: string, query?: {
7
+ cursor?: string;
8
+ limit?: number;
9
+ search?: string;
10
+ }, signal?: AbortSignal): Promise<AgentConversationPage>;
11
+ conversation(agentCode: string): AgentConversationController;
12
+ dispose(): void;
13
+ }
14
+ /** No endpoint, credential, user, app or environment parameter. RuntimeBoundary installs the identity. */
15
+ export declare function createApplicationAgentClient(): ApplicationAgentClient;
16
+ //# sourceMappingURL=agent-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-client.d.ts","sourceRoot":"","sources":["../../src/browser/agent-client.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,2BAA2B,EAAE,MAAM,sBAAsB,CAAC;AACnE,OAAO,KAAK,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEhF,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAC;IAC1D,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAAC;IACrJ,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,2BAA2B,CAAC;IAC7D,OAAO,IAAI,IAAI,CAAC;CACjB;AAED,0GAA0G;AAC1G,wBAAgB,4BAA4B,IAAI,sBAAsB,CAqCrE"}
@@ -0,0 +1,54 @@
1
+ import { createApplicationAgentTransport } from './platform-client';
2
+ import { AgentConversationController } from './agent-conversation';
3
+ /** No endpoint, credential, user, app or environment parameter. RuntimeBoundary installs the identity. */
4
+ export function createApplicationAgentClient() {
5
+ const transport = createApplicationAgentTransport();
6
+ const controllers = new Set();
7
+ let disposed = false;
8
+ const assertLive = () => { if (disposed)
9
+ throw new Error('AGENT_CLIENT_DISPOSED'); };
10
+ const dispose = () => {
11
+ if (disposed)
12
+ return;
13
+ disposed = true;
14
+ controllers.forEach(controller => controller.dispose());
15
+ controllers.clear();
16
+ transport.dispose();
17
+ };
18
+ transport.onDispose(dispose);
19
+ return {
20
+ scope: transport.scope,
21
+ async agents(signal) {
22
+ assertLive();
23
+ return (await transport.json('/agents', { signal })).items;
24
+ },
25
+ async conversations(agentCode, query = {}, signal) {
26
+ assertLive();
27
+ if (!/^[a-z][a-z0-9]*(?:[-.][a-z0-9]+)*$/.test(agentCode) ||
28
+ (query.cursor !== undefined && !/^\d+$/.test(query.cursor)) ||
29
+ (query.limit !== undefined && (!Number.isSafeInteger(query.limit) || query.limit < 1 || query.limit > 100)))
30
+ throw new Error('AGENT_QUERY_INVALID');
31
+ const params = new URLSearchParams({ agentCode });
32
+ if (query.cursor)
33
+ params.set('cursor', query.cursor);
34
+ if (query.limit)
35
+ params.set('limit', String(query.limit));
36
+ if (query.search)
37
+ params.set('search', query.search);
38
+ return await transport.json(`/conversations?${params}`, { signal });
39
+ },
40
+ conversation(agentCode) {
41
+ assertLive();
42
+ let storage;
43
+ try {
44
+ storage = typeof window === 'undefined' ? undefined : window.sessionStorage;
45
+ }
46
+ catch { /* memory-only */ }
47
+ const controller = new AgentConversationController(transport, agentCode, storage);
48
+ controllers.add(controller);
49
+ return controller;
50
+ },
51
+ dispose,
52
+ };
53
+ }
54
+ //# sourceMappingURL=agent-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-client.js","sourceRoot":"","sources":["../../src/browser/agent-client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,71 @@
1
+ import type { AgentConversation, AgentConversationSnapshot, AgentInteractionAcceptance, AgentReconciliation, AgentRun, ApplicationAgentTransport } from './agent-protocol';
2
+ export type AgentMutationKind = 'create' | 'send' | 'submit' | 'confirm' | 'cancel-run' | 'cancel-interaction' | 'reconcile' | 'resolve-manually';
3
+ export interface AgentPendingMutation {
4
+ kind: AgentMutationKind;
5
+ requestId: string;
6
+ targetId?: string;
7
+ revision?: number;
8
+ state: 'pending' | 'unknown';
9
+ }
10
+ export interface AgentConversationState {
11
+ phase: 'idle' | 'loading' | 'ready' | 'error' | 'disposed';
12
+ stream: 'idle' | 'connecting' | 'live' | 'reconnecting' | 'disconnected';
13
+ persistence: 'session' | 'memory';
14
+ snapshot?: AgentConversationSnapshot;
15
+ pending?: AgentPendingMutation;
16
+ /** Acknowledged is admission, never business success. Closed does not attribute the change to this request. */
17
+ lastResolution?: {
18
+ requestId: string;
19
+ disposition: 'acknowledged' | 'closed';
20
+ };
21
+ error?: Error;
22
+ }
23
+ type RecoveryStorage = Pick<Storage, 'getItem' | 'setItem' | 'removeItem'>;
24
+ export declare const INITIAL_AGENT_CONVERSATION_STATE: AgentConversationState;
25
+ /** One UI observer and mutation gate. The server still owns every durable state. */
26
+ export declare class AgentConversationController {
27
+ private readonly transport;
28
+ readonly agentCode: string;
29
+ private readonly storage?;
30
+ private value;
31
+ private readonly listeners;
32
+ private readonly lifetime;
33
+ private streamAbort?;
34
+ private conversationId?;
35
+ private writing;
36
+ private initialized;
37
+ private resumePromise?;
38
+ private readonly storageKey;
39
+ constructor(transport: ApplicationAgentTransport, agentCode: string, storage?: RecoveryStorage | undefined);
40
+ snapshot: () => AgentConversationState;
41
+ subscribe: (listener: () => void) => () => void;
42
+ private update;
43
+ private assertLive;
44
+ private persist;
45
+ /** Mount/reload only reads. It never creates a conversation or replays a write. */
46
+ resume(): Promise<void>;
47
+ private restoreAndRead;
48
+ /** Explicit history selection is scoped again by the platform, never trusted from storage. */
49
+ open(id: string): Promise<void>;
50
+ newConversation(): Promise<AgentConversation>;
51
+ send(text: string): Promise<AgentRun>;
52
+ cancel(runId: string): Promise<AgentRun>;
53
+ submitInteraction(id: string, revision: number, input: Record<string, unknown>): Promise<AgentInteractionAcceptance>;
54
+ confirm(id: string, revision: number): Promise<AgentInteractionAcceptance>;
55
+ cancelInteraction(id: string): Promise<AgentInteractionAcceptance>;
56
+ reconcile(id: string): Promise<AgentReconciliation>;
57
+ resolveManually(id: string, outcome: 'executed' | 'not_executed', note: string): Promise<AgentReconciliation>;
58
+ private mutate;
59
+ /** Read original correlation first. An absent result remains unknown, not permission to resubmit. */
60
+ recover(): Promise<void>;
61
+ private recoverOriginal;
62
+ refresh(): Promise<void>;
63
+ private readSnapshot;
64
+ private resolvePending;
65
+ private event;
66
+ private startStream;
67
+ private observe;
68
+ dispose(): void;
69
+ }
70
+ export {};
71
+ //# sourceMappingURL=agent-conversation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-conversation.d.ts","sourceRoot":"","sources":["../../src/browser/agent-conversation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,391 @@
1
+ import { createBrowserUuid } from './uuid';
2
+ import { consumeAgentStream } from './agent-stream';
3
+ const UUID = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;
4
+ const KINDS = ['create', 'send', 'submit', 'confirm', 'cancel-run', 'cancel-interaction', 'reconcile', 'resolve-manually'];
5
+ const asError = (value) => value instanceof Error ? value : new Error('AGENT_REQUEST_FAILED');
6
+ const uuid = (value) => { if (!UUID.test(value))
7
+ throw new Error('AGENT_ID_INVALID'); return value; };
8
+ const ambiguous = (error) => {
9
+ const value = error;
10
+ return value.code === 'AGENT_IDENTITY_CHANGED' || !value.status || value.status === 408 || value.status >= 500;
11
+ };
12
+ export const INITIAL_AGENT_CONVERSATION_STATE = Object.freeze({ phase: 'idle', stream: 'idle', persistence: 'memory' });
13
+ function pause(ms, signal) {
14
+ return new Promise((resolve, reject) => {
15
+ const abort = () => { clearTimeout(timer); signal.removeEventListener('abort', abort); reject(signal.reason || new DOMException('Aborted', 'AbortError')); };
16
+ const timer = setTimeout(() => { signal.removeEventListener('abort', abort); resolve(); }, ms);
17
+ if (signal.aborted)
18
+ abort();
19
+ else
20
+ signal.addEventListener('abort', abort, { once: true });
21
+ });
22
+ }
23
+ function replace(items, value) {
24
+ const index = items.findIndex(item => item.id === value.id);
25
+ if (index < 0)
26
+ return [...items, value];
27
+ return items.map((item, i) => i === index ? value : item);
28
+ }
29
+ /** One UI observer and mutation gate. The server still owns every durable state. */
30
+ export class AgentConversationController {
31
+ transport;
32
+ agentCode;
33
+ storage;
34
+ value;
35
+ listeners = new Set();
36
+ lifetime = new AbortController();
37
+ streamAbort;
38
+ conversationId;
39
+ writing = false;
40
+ initialized = false;
41
+ resumePromise;
42
+ storageKey;
43
+ constructor(transport, agentCode, storage) {
44
+ this.transport = transport;
45
+ this.agentCode = agentCode;
46
+ this.storage = storage;
47
+ if (!/^[a-z][a-z0-9]*(?:[-.][a-z0-9]+)*$/.test(agentCode))
48
+ throw new Error('AGENT_CODE_INVALID');
49
+ this.storageKey = `openxiangda:agent:v1:${JSON.stringify([transport.scope, agentCode])}`;
50
+ this.value = { ...INITIAL_AGENT_CONVERSATION_STATE, persistence: storage ? 'session' : 'memory' };
51
+ }
52
+ snapshot = () => this.value;
53
+ subscribe = (listener) => { this.listeners.add(listener); return () => { this.listeners.delete(listener); }; };
54
+ update(patch) {
55
+ if (this.lifetime.signal.aborted && patch.phase !== 'disposed')
56
+ return;
57
+ this.value = Object.freeze({ ...this.value, ...patch });
58
+ this.listeners.forEach(listener => listener());
59
+ }
60
+ assertLive() { if (this.lifetime.signal.aborted)
61
+ throw new Error('AGENT_OBSERVER_DISPOSED'); }
62
+ persist() {
63
+ if (!this.storage)
64
+ return;
65
+ try {
66
+ // Never store utterances, typed inputs, tokens, model settings or receipts.
67
+ this.storage.setItem(this.storageKey, JSON.stringify({ version: 1, conversationId: this.conversationId || null, pending: this.value.pending || null }));
68
+ }
69
+ catch {
70
+ this.update({ persistence: 'memory' });
71
+ }
72
+ }
73
+ /** Mount/reload only reads. It never creates a conversation or replays a write. */
74
+ resume() {
75
+ this.assertLive();
76
+ if (this.initialized)
77
+ return this.recover();
78
+ if (!this.resumePromise)
79
+ this.resumePromise = this.restoreAndRead().then(() => {
80
+ this.initialized = true;
81
+ }).finally(() => { this.resumePromise = undefined; });
82
+ return this.resumePromise;
83
+ }
84
+ async restoreAndRead() {
85
+ this.assertLive();
86
+ if (this.storage) {
87
+ try {
88
+ const raw = this.storage.getItem(this.storageKey);
89
+ if (raw) {
90
+ if (raw.length > 4096)
91
+ throw new Error('AGENT_RECOVERY_INVALID');
92
+ const saved = JSON.parse(raw);
93
+ if (saved.version !== 1 || (saved.conversationId !== null && (typeof saved.conversationId !== 'string' || !UUID.test(saved.conversationId))))
94
+ throw new Error('AGENT_RECOVERY_INVALID');
95
+ this.conversationId = typeof saved.conversationId === 'string' ? saved.conversationId : undefined;
96
+ if (saved.pending) {
97
+ const pending = saved.pending;
98
+ if (!KINDS.includes(pending.kind) || !UUID.test(pending.requestId) ||
99
+ (pending.targetId !== undefined && !UUID.test(pending.targetId)) ||
100
+ (pending.revision !== undefined && (!Number.isSafeInteger(pending.revision) || pending.revision < 1)))
101
+ throw new Error('AGENT_RECOVERY_INVALID');
102
+ this.update({ pending: { kind: pending.kind, requestId: pending.requestId, targetId: pending.targetId, revision: pending.revision, state: 'unknown' } });
103
+ }
104
+ }
105
+ }
106
+ catch (error) {
107
+ if (error?.message === 'AGENT_RECOVERY_INVALID' || error instanceof SyntaxError) {
108
+ this.update({ phase: 'error', error: asError(error) });
109
+ throw error;
110
+ }
111
+ this.update({ persistence: 'memory' }); // Storage can be unavailable; in-memory operation is still possible.
112
+ }
113
+ }
114
+ await this.recover();
115
+ }
116
+ /** Explicit history selection is scoped again by the platform, never trusted from storage. */
117
+ async open(id) {
118
+ this.assertLive();
119
+ if (!this.initialized)
120
+ await this.resume();
121
+ if (this.writing || this.value.pending)
122
+ throw new Error('AGENT_ORIGINAL_RESULT_REQUIRED');
123
+ this.streamAbort?.abort();
124
+ this.conversationId = uuid(id);
125
+ this.update({ snapshot: undefined, phase: 'loading', error: undefined });
126
+ await this.refresh();
127
+ }
128
+ async newConversation() {
129
+ const conversation = await this.mutate('create', '/conversations', { agentCode: this.agentCode });
130
+ uuid(conversation.id);
131
+ this.streamAbort?.abort();
132
+ this.conversationId = conversation.id;
133
+ this.update({ snapshot: undefined, lastResolution: undefined });
134
+ this.persist();
135
+ await this.refresh().catch(() => { });
136
+ return conversation;
137
+ }
138
+ async send(text) {
139
+ if (typeof text !== 'string' || !text.trim() || text.length > 8000)
140
+ throw new Error('AGENT_TEXT_INVALID');
141
+ if (!this.initialized)
142
+ await this.resume();
143
+ if (!this.conversationId)
144
+ await this.newConversation();
145
+ const result = await this.mutate('send', `/conversations/${uuid(this.conversationId)}/runs`, { text }, this.conversationId);
146
+ await this.refresh().catch(() => { });
147
+ return result;
148
+ }
149
+ async cancel(runId) {
150
+ const result = await this.mutate('cancel-run', `/runs/${uuid(runId)}/cancel`, {}, runId, undefined, false);
151
+ await this.refresh().catch(() => { });
152
+ return result;
153
+ }
154
+ async submitInteraction(id, revision, input) {
155
+ if (!Number.isSafeInteger(revision) || revision < 1 || !input || typeof input !== 'object' || Array.isArray(input))
156
+ throw new Error('AGENT_INPUT_INVALID');
157
+ // Untouched fields stay absent; null is an explicit clear. Do not merge partialInput.
158
+ const result = await this.mutate('submit', `/interactions/${uuid(id)}/submit`, { revision, input }, id, revision);
159
+ await this.refresh().catch(() => { });
160
+ return result;
161
+ }
162
+ async confirm(id, revision) {
163
+ if (!Number.isSafeInteger(revision) || revision < 1)
164
+ throw new Error('AGENT_INPUT_INVALID');
165
+ const result = await this.mutate('confirm', `/interactions/${uuid(id)}/confirm`, { revision }, id, revision);
166
+ await this.refresh().catch(() => { });
167
+ return result;
168
+ }
169
+ async cancelInteraction(id) {
170
+ const result = await this.mutate('cancel-interaction', `/interactions/${uuid(id)}/cancel`, {}, id, undefined, false);
171
+ await this.refresh().catch(() => { });
172
+ return result;
173
+ }
174
+ async reconcile(id) {
175
+ const result = await this.mutate('reconcile', `/tools/${uuid(id)}/reconcile`, {}, id, undefined, false);
176
+ await this.refresh().catch(() => { });
177
+ return result;
178
+ }
179
+ async resolveManually(id, outcome, note) {
180
+ if (!['executed', 'not_executed'].includes(outcome) || typeof note !== 'string' || !note.trim() || note.length > 1000)
181
+ throw new Error('AGENT_INPUT_INVALID');
182
+ const result = await this.mutate('resolve-manually', `/tools/${uuid(id)}/resolve-manually`, { outcome, note }, id, undefined, false);
183
+ await this.refresh().catch(() => { });
184
+ return result;
185
+ }
186
+ async mutate(kind, path, body, targetId, revision, sendRequestId = true) {
187
+ this.assertLive();
188
+ if (!this.initialized)
189
+ await this.resume();
190
+ if (this.writing || this.value.pending)
191
+ throw new Error('AGENT_ORIGINAL_RESULT_REQUIRED');
192
+ if (this.value.error?.message === 'AGENT_RECOVERY_INVALID')
193
+ throw this.value.error;
194
+ const requestId = createBrowserUuid();
195
+ // Freeze before dispatch, including deep typed values. App mutation of an object cannot change this intent.
196
+ const frozen = JSON.stringify({ ...body, ...(sendRequestId ? { requestId } : {}) });
197
+ this.writing = true;
198
+ this.update({ pending: { kind, requestId, targetId, revision, state: 'pending' }, error: undefined, lastResolution: undefined });
199
+ this.persist();
200
+ try {
201
+ const result = await this.transport.json(path, { method: 'POST', body: frozen, signal: this.lifetime.signal });
202
+ this.assertLive();
203
+ if (!result || typeof result !== 'object' || Array.isArray(result))
204
+ throw new Error('AGENT_RESPONSE_INVALID');
205
+ const record = result;
206
+ if (kind === 'create' && (typeof record.id !== 'string' || !UUID.test(record.id) || record.agentCode !== this.agentCode) ||
207
+ ['send', 'cancel-run'].includes(kind) && (typeof record.id !== 'string' || !UUID.test(record.id) || typeof record.state !== 'string') ||
208
+ !['create', 'send', 'cancel-run'].includes(kind) && typeof record.state !== 'string')
209
+ throw new Error('AGENT_RESPONSE_INVALID');
210
+ this.update({ pending: undefined, lastResolution: { requestId, disposition: 'acknowledged' } });
211
+ this.persist();
212
+ return result;
213
+ }
214
+ catch (error) {
215
+ if (ambiguous(error)) {
216
+ this.update({ pending: { kind, requestId, targetId, revision, state: 'unknown' }, error: asError(error) });
217
+ }
218
+ else {
219
+ this.update({ pending: undefined, error: asError(error) });
220
+ }
221
+ this.persist();
222
+ throw error;
223
+ }
224
+ finally {
225
+ this.writing = false;
226
+ this.resolvePending();
227
+ }
228
+ }
229
+ /** Read original correlation first. An absent result remains unknown, not permission to resubmit. */
230
+ async recover() {
231
+ try {
232
+ await this.recoverOriginal();
233
+ }
234
+ catch (error) {
235
+ this.update({ phase: 'error', error: asError(error) });
236
+ throw error;
237
+ }
238
+ }
239
+ async recoverOriginal() {
240
+ this.assertLive();
241
+ const pending = this.value.pending;
242
+ if (pending?.kind === 'create') {
243
+ const query = new URLSearchParams({ agentCode: this.agentCode, requestId: pending.requestId });
244
+ const page = await this.transport.json(`/conversations?${query}`, { signal: this.lifetime.signal });
245
+ this.assertLive();
246
+ const found = page.items.find(item => item.requestId === pending.requestId && item.agentCode === this.agentCode);
247
+ if (!found)
248
+ return;
249
+ this.conversationId = uuid(found.id);
250
+ this.update({ pending: undefined, snapshot: undefined, lastResolution: { requestId: pending.requestId, disposition: 'acknowledged' } });
251
+ this.persist();
252
+ }
253
+ if (this.conversationId)
254
+ await this.refresh();
255
+ }
256
+ async refresh() {
257
+ this.assertLive();
258
+ if (!this.conversationId)
259
+ return;
260
+ try {
261
+ await this.readSnapshot();
262
+ this.startStream();
263
+ }
264
+ catch (error) {
265
+ this.update({ phase: 'error', error: asError(error) });
266
+ throw error;
267
+ }
268
+ }
269
+ async readSnapshot() {
270
+ const id = this.conversationId;
271
+ const snapshot = await this.transport.json(`/conversations/${uuid(id)}`, { signal: this.lifetime.signal });
272
+ this.assertLive();
273
+ if (this.conversationId !== id)
274
+ return;
275
+ if (!snapshot || snapshot.conversation?.id !== id || snapshot.conversation.agentCode !== this.agentCode ||
276
+ !Number.isSafeInteger(snapshot.cursor) || snapshot.cursor < 0 ||
277
+ ![snapshot.messages, snapshot.runs, snapshot.tools, snapshot.interactions].every(Array.isArray))
278
+ throw new Error('AGENT_SNAPSHOT_INVALID');
279
+ if (this.value.snapshot && snapshot.cursor < this.value.snapshot.cursor)
280
+ return;
281
+ this.update({ snapshot, phase: 'ready', error: undefined });
282
+ this.resolvePending();
283
+ this.persist();
284
+ }
285
+ resolvePending() {
286
+ if (this.writing)
287
+ return; // Never let SSE release the gate while its POST is still in flight.
288
+ const pending = this.value.pending, snapshot = this.value.snapshot;
289
+ if (!pending || !snapshot)
290
+ return;
291
+ let disposition;
292
+ if (pending.kind === 'send' && snapshot.messages.some(item => item.requestId === pending.requestId && item.role === 'user'))
293
+ disposition = 'acknowledged';
294
+ if (pending.kind === 'submit' || pending.kind === 'confirm' || pending.kind === 'cancel-interaction') {
295
+ const card = snapshot.interactions.find(item => item.id === pending.targetId);
296
+ if (card?.requestId === pending.requestId)
297
+ disposition = 'acknowledged';
298
+ else if (card && ((pending.revision !== undefined && card.revision > pending.revision) || card.state !== 'waiting_input'))
299
+ disposition = 'closed';
300
+ }
301
+ if (pending.kind === 'cancel-run') {
302
+ const run = snapshot.runs.find(item => item.id === pending.targetId);
303
+ if (run && ['stopping', 'cancelled', 'completed', 'failed', 'superseded'].includes(run.state))
304
+ disposition = 'closed';
305
+ }
306
+ if (pending.kind === 'reconcile' || pending.kind === 'resolve-manually') {
307
+ const result = snapshot.tools.find(item => item.id === pending.targetId)?.reconciliation;
308
+ if (result && !['unknown', 'still_unknown', 'pending'].includes(result.state))
309
+ disposition = 'closed';
310
+ }
311
+ if (disposition) {
312
+ this.update({ pending: undefined, lastResolution: { requestId: pending.requestId, disposition } });
313
+ this.persist();
314
+ }
315
+ }
316
+ event(event) {
317
+ const previous = this.value.snapshot;
318
+ if (!previous)
319
+ throw new Error('AGENT_SNAPSHOT_REQUIRED');
320
+ let snapshot = { ...previous, cursor: event.seq };
321
+ switch (event.type) {
322
+ case 'conversation.updated':
323
+ if (event.data.id !== previous.conversation.id)
324
+ throw new Error('AGENT_STREAM_SCOPE_INVALID');
325
+ snapshot.conversation = { ...previous.conversation, ...event.data };
326
+ break;
327
+ case 'message.updated':
328
+ snapshot.messages = replace(previous.messages, event.data);
329
+ break;
330
+ case 'run.updated':
331
+ snapshot.runs = replace(previous.runs, event.data);
332
+ break;
333
+ case 'tool.updated':
334
+ snapshot.tools = replace(previous.tools, event.data);
335
+ break;
336
+ case 'interaction.updated':
337
+ snapshot.interactions = replace(previous.interactions, event.data);
338
+ break;
339
+ }
340
+ this.update({ snapshot, stream: 'live' });
341
+ this.resolvePending();
342
+ }
343
+ startStream() {
344
+ this.streamAbort?.abort();
345
+ const abort = new AbortController();
346
+ this.streamAbort = abort;
347
+ void this.observe(abort.signal).catch(error => {
348
+ if (!abort.signal.aborted)
349
+ this.update({ stream: 'disconnected', error: asError(error) });
350
+ });
351
+ }
352
+ async observe(signal) {
353
+ for (let attempt = 0; attempt <= 3 && !signal.aborted; attempt++) {
354
+ const id = this.conversationId, after = this.value.snapshot.cursor;
355
+ this.update({ stream: attempt ? 'reconnecting' : 'connecting' });
356
+ try {
357
+ const response = await this.transport.stream(`/conversations/${uuid(id)}/events?after=${after}`, signal);
358
+ if (signal.aborted)
359
+ return;
360
+ const result = await consumeAgentStream(response, after, event => { if (!signal.aborted)
361
+ this.event(event); }, signal);
362
+ if (signal.aborted)
363
+ return;
364
+ if (result.idle) {
365
+ this.update({ stream: 'idle' });
366
+ return;
367
+ }
368
+ throw new Error('AGENT_STREAM_INTERRUPTED');
369
+ }
370
+ catch (error) {
371
+ if (signal.aborted || this.lifetime.signal.aborted)
372
+ return;
373
+ const status = error.status;
374
+ if (attempt === 3 || status === 401 || status === 403 || status === 404 || status === 429)
375
+ throw error;
376
+ await pause([250, 750, 1500][attempt], signal);
377
+ // Only reads recover. Snapshot is cursor-consistent and may contain events received before disconnect.
378
+ await this.readSnapshot();
379
+ }
380
+ }
381
+ }
382
+ dispose() {
383
+ if (this.lifetime.signal.aborted)
384
+ return;
385
+ this.streamAbort?.abort();
386
+ this.lifetime.abort();
387
+ this.update({ phase: 'disposed', stream: 'idle', snapshot: undefined });
388
+ this.listeners.clear();
389
+ }
390
+ }
391
+ //# sourceMappingURL=agent-conversation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-conversation.js","sourceRoot":"","sources":["../../src/browser/agent-conversation.ts"],"names":[],"mappings":"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"}