@hypercli.com/sdk 0.9.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.
- package/README.md +629 -0
- package/dist/acp-driver.d.ts +72 -0
- package/dist/acp-driver.d.ts.map +1 -0
- package/dist/acp-driver.js +147 -0
- package/dist/acp-driver.js.map +1 -0
- package/dist/acp-pool.d.ts +70 -0
- package/dist/acp-pool.d.ts.map +1 -0
- package/dist/acp-pool.js +181 -0
- package/dist/acp-pool.js.map +1 -0
- package/dist/acp.d.ts +179 -0
- package/dist/acp.d.ts.map +1 -0
- package/dist/acp.js +487 -0
- package/dist/acp.js.map +1 -0
- package/dist/agent-persona.d.ts +68 -0
- package/dist/agent-persona.d.ts.map +1 -0
- package/dist/agent-persona.js +78 -0
- package/dist/agent-persona.js.map +1 -0
- package/dist/agent-slots.d.ts +18 -0
- package/dist/agent-slots.d.ts.map +1 -0
- package/dist/agent-slots.js +24 -0
- package/dist/agent-slots.js.map +1 -0
- package/dist/agent-urls.d.ts +47 -0
- package/dist/agent-urls.d.ts.map +1 -0
- package/dist/agent-urls.js +178 -0
- package/dist/agent-urls.js.map +1 -0
- package/dist/agent.d.ts +482 -0
- package/dist/agent.d.ts.map +1 -0
- package/dist/agent.js +926 -0
- package/dist/agent.js.map +1 -0
- package/dist/agents.d.ts +1452 -0
- package/dist/agents.d.ts.map +1 -0
- package/dist/agents.js +4022 -0
- package/dist/agents.js.map +1 -0
- package/dist/billing.d.ts +72 -0
- package/dist/billing.d.ts.map +1 -0
- package/dist/billing.js +93 -0
- package/dist/billing.js.map +1 -0
- package/dist/browser-jobs.d.ts +24 -0
- package/dist/browser-jobs.d.ts.map +1 -0
- package/dist/browser-jobs.js +209 -0
- package/dist/browser-jobs.js.map +1 -0
- package/dist/browser.d.ts +41 -0
- package/dist/browser.d.ts.map +1 -0
- package/dist/browser.js +57 -0
- package/dist/browser.js.map +1 -0
- package/dist/buzz-activity.d.ts +169 -0
- package/dist/buzz-activity.d.ts.map +1 -0
- package/dist/buzz-activity.js +844 -0
- package/dist/buzz-activity.js.map +1 -0
- package/dist/channels.d.ts +99 -0
- package/dist/channels.d.ts.map +1 -0
- package/dist/channels.js +27 -0
- package/dist/channels.js.map +1 -0
- package/dist/chat-integrations.d.ts +44 -0
- package/dist/chat-integrations.d.ts.map +1 -0
- package/dist/chat-integrations.js +138 -0
- package/dist/chat-integrations.js.map +1 -0
- package/dist/client.d.ts +88 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +144 -0
- package/dist/client.js.map +1 -0
- package/dist/config.d.ts +44 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +192 -0
- package/dist/config.js.map +1 -0
- package/dist/connectors.d.ts +80 -0
- package/dist/connectors.d.ts.map +1 -0
- package/dist/connectors.js +2 -0
- package/dist/connectors.js.map +1 -0
- package/dist/errors.d.ts +16 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +26 -0
- package/dist/errors.js.map +1 -0
- package/dist/files.d.ts +60 -0
- package/dist/files.d.ts.map +1 -0
- package/dist/files.js +128 -0
- package/dist/files.js.map +1 -0
- package/dist/http.d.ts +56 -0
- package/dist/http.d.ts.map +1 -0
- package/dist/http.js +362 -0
- package/dist/http.js.map +1 -0
- package/dist/index.d.ts +49 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +64 -0
- package/dist/index.js.map +1 -0
- package/dist/instances.d.ts +94 -0
- package/dist/instances.d.ts.map +1 -0
- package/dist/instances.js +197 -0
- package/dist/instances.js.map +1 -0
- package/dist/integrations.d.ts +111 -0
- package/dist/integrations.d.ts.map +1 -0
- package/dist/integrations.js +206 -0
- package/dist/integrations.js.map +1 -0
- package/dist/job/base.d.ts +86 -0
- package/dist/job/base.d.ts.map +1 -0
- package/dist/job/base.js +206 -0
- package/dist/job/base.js.map +1 -0
- package/dist/job/comfyui.d.ts +259 -0
- package/dist/job/comfyui.d.ts.map +1 -0
- package/dist/job/comfyui.js +1563 -0
- package/dist/job/comfyui.js.map +1 -0
- package/dist/job/gradio.d.ts +48 -0
- package/dist/job/gradio.d.ts.map +1 -0
- package/dist/job/gradio.js +90 -0
- package/dist/job/gradio.js.map +1 -0
- package/dist/job-codecs.d.ts +66 -0
- package/dist/job-codecs.d.ts.map +1 -0
- package/dist/job-codecs.js +132 -0
- package/dist/job-codecs.js.map +1 -0
- package/dist/jobs.d.ts +148 -0
- package/dist/jobs.d.ts.map +1 -0
- package/dist/jobs.js +480 -0
- package/dist/jobs.js.map +1 -0
- package/dist/keys.d.ts +99 -0
- package/dist/keys.d.ts.map +1 -0
- package/dist/keys.js +145 -0
- package/dist/keys.js.map +1 -0
- package/dist/logs.d.ts +54 -0
- package/dist/logs.d.ts.map +1 -0
- package/dist/logs.js +256 -0
- package/dist/logs.js.map +1 -0
- package/dist/managed-context.d.ts +20 -0
- package/dist/managed-context.d.ts.map +1 -0
- package/dist/managed-context.js +95 -0
- package/dist/managed-context.js.map +1 -0
- package/dist/mcp.d.ts +7 -0
- package/dist/mcp.d.ts.map +1 -0
- package/dist/mcp.js +8 -0
- package/dist/mcp.js.map +1 -0
- package/dist/memory.d.ts +87 -0
- package/dist/memory.d.ts.map +1 -0
- package/dist/memory.js +79 -0
- package/dist/memory.js.map +1 -0
- package/dist/models.d.ts +15 -0
- package/dist/models.d.ts.map +1 -0
- package/dist/models.js +19 -0
- package/dist/models.js.map +1 -0
- package/dist/openclaw-control-ui-origin.d.ts +23 -0
- package/dist/openclaw-control-ui-origin.d.ts.map +1 -0
- package/dist/openclaw-control-ui-origin.js +53 -0
- package/dist/openclaw-control-ui-origin.js.map +1 -0
- package/dist/renders.d.ts +187 -0
- package/dist/renders.d.ts.map +1 -0
- package/dist/renders.js +360 -0
- package/dist/renders.js.map +1 -0
- package/dist/routines.d.ts +59 -0
- package/dist/routines.d.ts.map +1 -0
- package/dist/routines.js +135 -0
- package/dist/routines.js.map +1 -0
- package/dist/runners.d.ts +61 -0
- package/dist/runners.d.ts.map +1 -0
- package/dist/runners.js +127 -0
- package/dist/runners.js.map +1 -0
- package/dist/sessions.d.ts +280 -0
- package/dist/sessions.d.ts.map +1 -0
- package/dist/sessions.js +292 -0
- package/dist/sessions.js.map +1 -0
- package/dist/skills.d.ts +170 -0
- package/dist/skills.d.ts.map +1 -0
- package/dist/skills.js +2 -0
- package/dist/skills.js.map +1 -0
- package/dist/user.d.ts +78 -0
- package/dist/user.d.ts.map +1 -0
- package/dist/user.js +143 -0
- package/dist/user.js.map +1 -0
- package/dist/version.d.ts +2 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +3 -0
- package/dist/version.js.map +1 -0
- package/dist/voice-session.d.ts +66 -0
- package/dist/voice-session.d.ts.map +1 -0
- package/dist/voice-session.js +366 -0
- package/dist/voice-session.js.map +1 -0
- package/dist/voice-transcription-session.d.ts +64 -0
- package/dist/voice-transcription-session.d.ts.map +1 -0
- package/dist/voice-transcription-session.js +228 -0
- package/dist/voice-transcription-session.js.map +1 -0
- package/dist/voice.d.ts +62 -0
- package/dist/voice.d.ts.map +1 -0
- package/dist/voice.js +134 -0
- package/dist/voice.js.map +1 -0
- package/dist/workspace-tomd.d.ts +61 -0
- package/dist/workspace-tomd.d.ts.map +1 -0
- package/dist/workspace-tomd.js +177 -0
- package/dist/workspace-tomd.js.map +1 -0
- package/dist/workspaces.d.ts +255 -0
- package/dist/workspaces.d.ts.map +1 -0
- package/dist/workspaces.js +653 -0
- package/dist/workspaces.js.map +1 -0
- package/package.json +115 -0
- package/runtime/config-require.browser.js +4 -0
- package/runtime/config-require.d.ts +2 -0
- package/runtime/config-require.node.js +8 -0
package/dist/runners.js
ADDED
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Runners API - self-hosted compute registry (agents backend /runners).
|
|
3
|
+
*/
|
|
4
|
+
import { requestWithRetry, responseAPIError } from './http.js';
|
|
5
|
+
import { getAgentsApiBaseUrl } from './config.js';
|
|
6
|
+
export function deriveRunnersApiBase(agentsApiBase) {
|
|
7
|
+
const raw = (agentsApiBase || getAgentsApiBaseUrl()).replace(/\/$/, '');
|
|
8
|
+
const url = new URL(raw.includes('://') ? raw : `https://${raw}`);
|
|
9
|
+
const path = url.pathname.replace(/\/$/, '');
|
|
10
|
+
if (path.endsWith('/runners')) {
|
|
11
|
+
return `${url.protocol}//${url.host}${path}`;
|
|
12
|
+
}
|
|
13
|
+
return `${url.protocol}//${url.host}${path}/runners`;
|
|
14
|
+
}
|
|
15
|
+
function runnerUiMetaFromDict(data) {
|
|
16
|
+
if (!data || typeof data !== 'object' || Array.isArray(data))
|
|
17
|
+
return null;
|
|
18
|
+
const ui = {};
|
|
19
|
+
if ('display_name' in data) {
|
|
20
|
+
const value = data.display_name;
|
|
21
|
+
if (typeof value !== 'string' && value !== null)
|
|
22
|
+
return null;
|
|
23
|
+
ui.displayName = value;
|
|
24
|
+
}
|
|
25
|
+
return ui;
|
|
26
|
+
}
|
|
27
|
+
function runnerMetaFromDict(data) {
|
|
28
|
+
if (!data || typeof data !== 'object' || Array.isArray(data))
|
|
29
|
+
return null;
|
|
30
|
+
const meta = {};
|
|
31
|
+
if ('ui' in data)
|
|
32
|
+
meta.ui = runnerUiMetaFromDict(data.ui);
|
|
33
|
+
return meta;
|
|
34
|
+
}
|
|
35
|
+
function runnerFromDict(data) {
|
|
36
|
+
const platform = data?.platform && typeof data.platform === 'object' ? data.platform : {};
|
|
37
|
+
return {
|
|
38
|
+
runnerId: String(data?.runner_id || ''),
|
|
39
|
+
ownerUserId: String(data?.owner_user_id || ''),
|
|
40
|
+
name: String(data?.name || ''),
|
|
41
|
+
tags: Array.isArray(data?.tags) ? data.tags.map(String) : [],
|
|
42
|
+
platform: { os: String(platform.os || ''), arch: String(platform.arch || '') },
|
|
43
|
+
version: String(data?.version || ''),
|
|
44
|
+
createdAt: data?.created_at ?? null,
|
|
45
|
+
lastSeenAt: data?.last_seen_at ?? null,
|
|
46
|
+
disconnectedAt: data?.disconnected_at ?? null,
|
|
47
|
+
meta: runnerMetaFromDict(data?.meta),
|
|
48
|
+
...(data?.connected !== undefined ? { connected: Boolean(data.connected) } : {}),
|
|
49
|
+
...(data?.ready !== undefined ? { ready: Boolean(data.ready) } : {}),
|
|
50
|
+
...(data?.connection_scope !== undefined ? { connectionScope: String(data.connection_scope) } : {}),
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
async function handleResponse(response, method) {
|
|
54
|
+
if (response.status >= 400) {
|
|
55
|
+
throw await responseAPIError(response, method);
|
|
56
|
+
}
|
|
57
|
+
if (response.status === 204 || response.status === 205)
|
|
58
|
+
return undefined;
|
|
59
|
+
const text = await response.text();
|
|
60
|
+
if (!text)
|
|
61
|
+
return undefined;
|
|
62
|
+
return JSON.parse(text);
|
|
63
|
+
}
|
|
64
|
+
function encodeRef(value) {
|
|
65
|
+
return encodeURIComponent(value);
|
|
66
|
+
}
|
|
67
|
+
export class RunnersAPI {
|
|
68
|
+
apiBase;
|
|
69
|
+
apiKey;
|
|
70
|
+
timeout;
|
|
71
|
+
constructor(apiKey, options = {}) {
|
|
72
|
+
if (!apiKey) {
|
|
73
|
+
throw new Error('API key required for runners');
|
|
74
|
+
}
|
|
75
|
+
this.apiKey = apiKey;
|
|
76
|
+
this.apiBase = (options.apiBase || deriveRunnersApiBase(options.agentsApiBase)).replace(/\/$/, '');
|
|
77
|
+
this.timeout = options.timeout ?? 30000;
|
|
78
|
+
}
|
|
79
|
+
headers() {
|
|
80
|
+
return {
|
|
81
|
+
Authorization: `Bearer ${this.apiKey}`,
|
|
82
|
+
'Content-Type': 'application/json',
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
async request(method, path, body) {
|
|
86
|
+
const response = await requestWithRetry({
|
|
87
|
+
method,
|
|
88
|
+
url: `${this.apiBase}${path}`,
|
|
89
|
+
headers: this.headers(),
|
|
90
|
+
body,
|
|
91
|
+
retries: method === 'GET' ? 3 : 1,
|
|
92
|
+
timeout: this.timeout,
|
|
93
|
+
});
|
|
94
|
+
return handleResponse(response, method);
|
|
95
|
+
}
|
|
96
|
+
async list() {
|
|
97
|
+
const data = await this.request('GET', '');
|
|
98
|
+
const items = Array.isArray(data) ? data : Array.isArray(data?.runners) ? data.runners : null;
|
|
99
|
+
if (!items) {
|
|
100
|
+
throw new Error('Runners response must be an array.');
|
|
101
|
+
}
|
|
102
|
+
return items.map(runnerFromDict);
|
|
103
|
+
}
|
|
104
|
+
/** Omit runnerId to allocate an identity. Sent once; a lost reply is uncertain. */
|
|
105
|
+
async register(body) {
|
|
106
|
+
return runnerFromDict(await this.request('POST', '', {
|
|
107
|
+
...(body.runnerId !== undefined ? { runner_id: body.runnerId } : {}),
|
|
108
|
+
name: body.name, tags: body.tags ?? [], version: body.version, platform: body.platform,
|
|
109
|
+
}));
|
|
110
|
+
}
|
|
111
|
+
async get(runnerId) {
|
|
112
|
+
const data = await this.request('GET', `/${encodeRef(runnerId)}`);
|
|
113
|
+
return runnerFromDict(data);
|
|
114
|
+
}
|
|
115
|
+
async update(runnerId, body) {
|
|
116
|
+
const payload = {};
|
|
117
|
+
if (body.ui !== undefined) {
|
|
118
|
+
const ui = {};
|
|
119
|
+
if (body.ui.displayName !== undefined)
|
|
120
|
+
ui.display_name = body.ui.displayName;
|
|
121
|
+
payload.ui = ui;
|
|
122
|
+
}
|
|
123
|
+
const data = await this.request('PATCH', `/${encodeRef(runnerId)}`, payload);
|
|
124
|
+
return runnerFromDict(data);
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
//# sourceMappingURL=runners.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runners.js","sourceRoot":"","sources":["../src/runners.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,280 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Sessions REST client — the §15 memory-shaped session model
|
|
3
|
+
* (sessions/README §15) as a read surface for console/desktop/CLI.
|
|
4
|
+
*
|
|
5
|
+
* The backend proxy (`/ws/acp`, see acp.ts) is the write/turn path; this
|
|
6
|
+
* namespace is the typed read path over the durable `agent_sessions` /
|
|
7
|
+
* `session_messages` tables: session catalog with summaries and participants,
|
|
8
|
+
* backwards-paginated history per session. The wire contract is owned by the
|
|
9
|
+
* backend routes (`agents/backend/agents/session_routes.py` —
|
|
10
|
+
* `SessionListPage` / `SessionMessagePage`), and both pages are the same
|
|
11
|
+
* envelope: `{ items, next_cursor, has_more }`.
|
|
12
|
+
*
|
|
13
|
+
* Pagination contract (§15 "Type & pagination"): every list is keyset over a
|
|
14
|
+
* server-issued opaque cursor — never OFFSET. Messages page BACKWARDS from
|
|
15
|
+
* last-seen (`seq < cursor`, newest first), extending whole chunk runs and tool
|
|
16
|
+
* dependencies; has_more says older eligible rows exist. Sessions page over
|
|
17
|
+
* `(updated_at, id)`.
|
|
18
|
+
*/
|
|
19
|
+
import type { HTTPClient } from './http.js';
|
|
20
|
+
/** Native catalog discovery, independent of active conversation/turn state. */
|
|
21
|
+
export interface SessionDiscoveryStatus {
|
|
22
|
+
status: 'pending' | 'running' | 'complete' | 'error' | 'unsupported';
|
|
23
|
+
/** Catalog enumeration may succeed even when the runtime cannot replay history. */
|
|
24
|
+
history_status?: 'unknown' | 'supported' | 'unsupported';
|
|
25
|
+
error_code: 'runtime_unavailable' | 'discovery_failed' | 'catalog_unsupported' | null;
|
|
26
|
+
discovered_count: number | null;
|
|
27
|
+
queued_count: number;
|
|
28
|
+
importing_count: number;
|
|
29
|
+
last_attempt_at: string | null;
|
|
30
|
+
last_completed_at: string | null;
|
|
31
|
+
}
|
|
32
|
+
/** Durable, content-free REST evidence for the current import generation.
|
|
33
|
+
* Counts describe the attempt, not the requested history page. `empty` means
|
|
34
|
+
* supported replay completed with zero updates; `filtered` means valid updates
|
|
35
|
+
* were excluded by retention policy. Unknown/never-attempted evidence is null.
|
|
36
|
+
*/
|
|
37
|
+
export interface SessionImportOutcome {
|
|
38
|
+
status: 'retained' | 'empty' | 'filtered' | 'unsupported' | 'malformed' | 'failed';
|
|
39
|
+
protocol_version: 1 | null;
|
|
40
|
+
generation: number;
|
|
41
|
+
recorded_at: string;
|
|
42
|
+
observed_updates: number;
|
|
43
|
+
valid_updates: number;
|
|
44
|
+
filtered_updates: number;
|
|
45
|
+
invalid_updates: number;
|
|
46
|
+
foreign_updates: number;
|
|
47
|
+
retained_rows: number;
|
|
48
|
+
}
|
|
49
|
+
/** One `session_participants` row as embedded in the session catalog (backend `SessionParticipant`). */
|
|
50
|
+
export interface AcpSessionParticipant {
|
|
51
|
+
kind: 'user' | 'agent';
|
|
52
|
+
participantId: string;
|
|
53
|
+
/** The agent leg's harness-side session id; null for user participants and legs without one. */
|
|
54
|
+
internalSessionId: string | null;
|
|
55
|
+
/** Participant's durable delivery cursor (seq) in this session. */
|
|
56
|
+
cursorPos: number;
|
|
57
|
+
}
|
|
58
|
+
/** One `agent_sessions` row as the catalog sees it (backend `SessionListItem`). summaryText doubles as the display title. */
|
|
59
|
+
export interface AcpSessionRecord {
|
|
60
|
+
id: string;
|
|
61
|
+
/** Persisted product permission mode; distinct from native ACP session modes. */
|
|
62
|
+
mode?: 'ask' | 'auto' | 'none' | null;
|
|
63
|
+
/** Descriptive creation provenance; unknown values are preserved. */
|
|
64
|
+
source: string | null;
|
|
65
|
+
createdAt: string | null;
|
|
66
|
+
/** Last-activity timestamp; bumps on every message append, not on row touch. */
|
|
67
|
+
updatedAt: string | null;
|
|
68
|
+
summaryText: string | null;
|
|
69
|
+
summaryKeywords: string[];
|
|
70
|
+
participants: AcpSessionParticipant[];
|
|
71
|
+
importOutcome?: SessionImportOutcome | null;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Per-logical-message delivery evidence from the session detail read (backend
|
|
75
|
+
* `SessionStateDetail.receipts`): the settled markers a chat pane merges onto
|
|
76
|
+
* already-rendered messages without paging message rows. Merged per
|
|
77
|
+
* participant, role and message id: earliest created_at, first non-null delivery
|
|
78
|
+
* and user completion (latest assistant completion). Missing scope stays unknown.
|
|
79
|
+
*/
|
|
80
|
+
export interface AcpSessionReceipt {
|
|
81
|
+
messageId: string;
|
|
82
|
+
role: 'user' | 'assistant' | 'tool';
|
|
83
|
+
/** Author scope, matching messages-page participantId; absent on older servers. */
|
|
84
|
+
participantId?: string | null;
|
|
85
|
+
createdAt: string | null;
|
|
86
|
+
deliveredAt: string | null;
|
|
87
|
+
completedAt: string | null;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* The session detail read (`GET /sessions/{id}`, backend `SessionStateDetail`):
|
|
91
|
+
* the catalog record plus the state a chat pane needs to open on the session —
|
|
92
|
+
* logical-message identity anchors and delivery receipts — without the
|
|
93
|
+
* messages page. Fields absent on an older backend default empty.
|
|
94
|
+
*/
|
|
95
|
+
export interface AcpSessionState extends AcpSessionRecord {
|
|
96
|
+
/** Effective identity of the newest replay-eligible logical message; null on an empty session. */
|
|
97
|
+
lastMessageId: string | null;
|
|
98
|
+
/** Distinct logical message identities over replay-eligible rows. */
|
|
99
|
+
messageCount: number;
|
|
100
|
+
/** Highest stored seq; the read receipt advances to here. */
|
|
101
|
+
headSeq: number;
|
|
102
|
+
receipts: AcpSessionReceipt[];
|
|
103
|
+
/** Agent connection state computed per request by the backend, never stored; null on a pre-state backend. */
|
|
104
|
+
agentState: 'live' | 'archived' | 'deleted' | null;
|
|
105
|
+
}
|
|
106
|
+
/** Current product metadata on an existing session message, never ACP metadata. */
|
|
107
|
+
export interface SessionMessageMeta {
|
|
108
|
+
/** Keys are exact `unicode:${value}` or `custom:${scopedReference}`. */
|
|
109
|
+
reactions: Record<string, SessionReactionGroup>;
|
|
110
|
+
reactionSupport: 'supported' | 'unsupported' | 'unknown';
|
|
111
|
+
reactionsComplete: boolean;
|
|
112
|
+
/** Canonical UTC, six fractional digits. Compare strings, not JS milliseconds. */
|
|
113
|
+
reactionUpdatedAt: string | null;
|
|
114
|
+
}
|
|
115
|
+
export interface SessionReactionGroup {
|
|
116
|
+
/** Null means unknown, not zero or the number of known actors. */
|
|
117
|
+
count: number | null;
|
|
118
|
+
actors: Record<string, {
|
|
119
|
+
isBot: boolean;
|
|
120
|
+
receipt: string | null;
|
|
121
|
+
}>;
|
|
122
|
+
actorsComplete: boolean;
|
|
123
|
+
}
|
|
124
|
+
/** Rollout read compatibility only; new operations already carry dictionary metadata. */
|
|
125
|
+
export declare function sessionMessageMetaFromWire(value: unknown, legacyRead?: boolean): SessionMessageMeta | undefined;
|
|
126
|
+
/** Retain the freshest current projection; equal timestamps preserve object identity. */
|
|
127
|
+
export declare function newerSessionMessageMeta(current: SessionMessageMeta | undefined, incoming: SessionMessageMeta | undefined): SessionMessageMeta | undefined;
|
|
128
|
+
/** Read-only subscriber operation, separate from ACP and from native write requests. */
|
|
129
|
+
export interface SessionReactionOperation {
|
|
130
|
+
type: 'addReaction' | 'removeReaction';
|
|
131
|
+
agent_id: string;
|
|
132
|
+
session_id: string;
|
|
133
|
+
seq: number;
|
|
134
|
+
message_id: string;
|
|
135
|
+
target: {
|
|
136
|
+
source: string;
|
|
137
|
+
account: string;
|
|
138
|
+
workspace: string | null;
|
|
139
|
+
channel: string | null;
|
|
140
|
+
thread: string | null;
|
|
141
|
+
message: string;
|
|
142
|
+
};
|
|
143
|
+
actor: {
|
|
144
|
+
id: string;
|
|
145
|
+
isBot: boolean;
|
|
146
|
+
};
|
|
147
|
+
reaction: {
|
|
148
|
+
kind: 'unicode' | 'custom';
|
|
149
|
+
value: string;
|
|
150
|
+
};
|
|
151
|
+
receipt: string | null;
|
|
152
|
+
meta: SessionMessageMeta;
|
|
153
|
+
}
|
|
154
|
+
/** Apply the resulting snapshot, never increment counts or replay actor deltas. */
|
|
155
|
+
export declare function applySessionReactionOperation<T extends AcpSessionMessage>(rows: T[], event: SessionReactionOperation): T[];
|
|
156
|
+
export declare function sessionReactionDisplay(key: string): string;
|
|
157
|
+
/** One `session_messages` row (backend `SessionMessage`): the durable full-fidelity truth for a session. */
|
|
158
|
+
export interface AcpSessionMessage {
|
|
159
|
+
/** Stable platform history identity; never an ACP wire field. */
|
|
160
|
+
messageId?: string | null;
|
|
161
|
+
sessionId: string;
|
|
162
|
+
/** Per-session ordering; the store's "where are we" value (the ACP wire has no ordinals). */
|
|
163
|
+
seq: number;
|
|
164
|
+
role: 'user' | 'assistant' | 'tool';
|
|
165
|
+
/** ACP-style settled payload at FULL fidelity — tool calls retained. */
|
|
166
|
+
acp: Record<string, unknown>;
|
|
167
|
+
/** Absent on older servers. Retain the authoritative snapshot without folding deltas. */
|
|
168
|
+
meta?: SessionMessageMeta;
|
|
169
|
+
/** Assistant-side end-of-turn marker; turns derive prompt→stop. */
|
|
170
|
+
stopReason: string | null;
|
|
171
|
+
createdAt: string | null;
|
|
172
|
+
/** Null until delivery is durable: user rows stamp at turn commit, agent rows at persist (§15). */
|
|
173
|
+
deliveredAt: string | null;
|
|
174
|
+
/** Null until the covering turn commits; on user rows this is the "agent acted on this" receipt (§15). */
|
|
175
|
+
completedAt: string | null;
|
|
176
|
+
/** Author tuple; resolve via the session's participants. */
|
|
177
|
+
participantKind: 'user' | 'agent' | null;
|
|
178
|
+
participantId: string | null;
|
|
179
|
+
}
|
|
180
|
+
/** One page of a cursor-paginated endpoint. */
|
|
181
|
+
export interface AcpSessionPage<T> {
|
|
182
|
+
items: T[];
|
|
183
|
+
/** Opaque server cursor for the next page; null when exhausted. */
|
|
184
|
+
nextCursor: string | null;
|
|
185
|
+
/** The server has more eligible rows beyond this page. */
|
|
186
|
+
hasMore: boolean;
|
|
187
|
+
}
|
|
188
|
+
export interface AcpSessionMessagePage extends AcpSessionPage<AcpSessionMessage> {
|
|
189
|
+
importOutcome: SessionImportOutcome | null;
|
|
190
|
+
/** Session event head read with the page's receipts; missing on older servers. */
|
|
191
|
+
headSeq?: number | null;
|
|
192
|
+
}
|
|
193
|
+
export interface AcpSessionListOptions {
|
|
194
|
+
agentId?: string;
|
|
195
|
+
cursor?: string | null;
|
|
196
|
+
limit?: number;
|
|
197
|
+
}
|
|
198
|
+
export interface AcpSessionMessagesOptions {
|
|
199
|
+
/** Opaque cursor from a previous page's nextCursor; omitted starts at the newest message. */
|
|
200
|
+
cursor?: string | null;
|
|
201
|
+
limit?: number;
|
|
202
|
+
}
|
|
203
|
+
/**
|
|
204
|
+
* One full-text transcript hit (backend `GET /sessions/search`): the durable
|
|
205
|
+
* message the query matched inside, with a server-built excerpt of the
|
|
206
|
+
* surrounding transcript words. `score` is currently always null — full-text
|
|
207
|
+
* match carries no rank.
|
|
208
|
+
*/
|
|
209
|
+
export interface AcpTranscriptSearchHit {
|
|
210
|
+
sessionId: string;
|
|
211
|
+
/** Authorized platform navigation metadata; null on older servers. */
|
|
212
|
+
agentId: string | null;
|
|
213
|
+
title: string | null;
|
|
214
|
+
seq: number;
|
|
215
|
+
role: string;
|
|
216
|
+
/** ACP message identity when the matched frame carries one; resolve via the session's rendered messages. */
|
|
217
|
+
messageId: string | null;
|
|
218
|
+
excerpt: string;
|
|
219
|
+
score: number | null;
|
|
220
|
+
}
|
|
221
|
+
export interface AcpTranscriptSearchOptions {
|
|
222
|
+
/** Restrict the search to one session (in-transcript find); omitted searches every session the caller can read. */
|
|
223
|
+
sessionId?: string;
|
|
224
|
+
/** Opaque cursor from a previous page's nextCursor; omitted starts at the newest session activity. */
|
|
225
|
+
cursor?: string | null;
|
|
226
|
+
limit?: number;
|
|
227
|
+
}
|
|
228
|
+
/** Ascending durable-message window centered on `focusSeq` (backend `GET /sessions/{id}/messages/around`). */
|
|
229
|
+
export interface AcpSessionMessagesWindow {
|
|
230
|
+
sessionId: string;
|
|
231
|
+
focusSeq: number;
|
|
232
|
+
items: AcpSessionMessage[];
|
|
233
|
+
}
|
|
234
|
+
/**
|
|
235
|
+
* Session read surface scoped to the caller's identity (user key: sessions
|
|
236
|
+
* of owned agents; runtime key: sessions §15 exposes to the pod). Bound to
|
|
237
|
+
* the agents API base, so `/sessions` resolves to `/agents/sessions`.
|
|
238
|
+
*/
|
|
239
|
+
export declare class SessionsAPI {
|
|
240
|
+
private readonly http;
|
|
241
|
+
constructor(http: Pick<HTTPClient, 'get'> & Partial<Pick<HTTPClient, 'post'>>);
|
|
242
|
+
/** Read discovery evidence; an empty stored catalog alone is not discovery success. */
|
|
243
|
+
getDiscoveryStatus(agentId: string): Promise<SessionDiscoveryStatus>;
|
|
244
|
+
/** Explicitly request discovery. Unsupported runtimes remain unsupported. */
|
|
245
|
+
requestDiscovery(agentId: string): Promise<SessionDiscoveryStatus>;
|
|
246
|
+
/**
|
|
247
|
+
* Stored metadata and chat-open state for one platform session ID (not an
|
|
248
|
+
* agent/runtime session ID). Uses the caller's existing participation scope;
|
|
249
|
+
* no runtime connection. Advances the caller's read receipt to the head.
|
|
250
|
+
*/
|
|
251
|
+
getSession(platformSessionId: string): Promise<AcpSessionState>;
|
|
252
|
+
/** Persist product permission mode. A 503 can follow persistence; GET reads it back. */
|
|
253
|
+
setMode(platformSessionId: string, mode: 'ask' | 'auto' | 'none'): Promise<AcpSessionRecord>;
|
|
254
|
+
/** Session catalog page, newest activity first (`(updated_at, id)` keyset). */
|
|
255
|
+
listSessions(options?: AcpSessionListOptions): Promise<AcpSessionPage<AcpSessionRecord>>;
|
|
256
|
+
/**
|
|
257
|
+
* Canonical complete history page, delivered as one coherent result.
|
|
258
|
+
* Rows stay descending by seq; feed the opaque nextCursor back to read older
|
|
259
|
+
* rows. Limit (default 20) is a target: the server extends chunk runs and tool
|
|
260
|
+
* creation dependencies. Native ACP payloads/IDs and full tool content are
|
|
261
|
+
* untouched; only platform DTO fields are normalized. This read does not
|
|
262
|
+
* establish a transaction or gap-free boundary with a live subscription.
|
|
263
|
+
*/
|
|
264
|
+
getMessages(sessionId: string, options?: AcpSessionMessagesOptions): Promise<AcpSessionMessagePage>;
|
|
265
|
+
/**
|
|
266
|
+
* Full-text search over durable transcript payloads (`GET /sessions/search`),
|
|
267
|
+
* keyset-paged over (session activity desc, seq desc). Feed `nextCursor`
|
|
268
|
+
* back in to walk further. Read-only; no read-receipt effect.
|
|
269
|
+
*/
|
|
270
|
+
searchTranscript(query: string, options?: AcpTranscriptSearchOptions): Promise<AcpSessionPage<AcpTranscriptSearchHit>>;
|
|
271
|
+
/**
|
|
272
|
+
* One ascending window of durable messages around `seq` (`GET
|
|
273
|
+
* /sessions/{id}/messages/around`) — for landing a search jump on history
|
|
274
|
+
* the caller has not loaded. Never advances the read receipt.
|
|
275
|
+
*/
|
|
276
|
+
getMessagesAround(sessionId: string, seq: number, options?: {
|
|
277
|
+
radius?: number;
|
|
278
|
+
}): Promise<AcpSessionMessagesWindow>;
|
|
279
|
+
}
|
|
280
|
+
//# sourceMappingURL=sessions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sessions.d.ts","sourceRoot":"","sources":["../src/sessions.ts"],"names":[],"mappings":"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"}
|