@byok-sdk/cloud 0.7.0 → 0.8.0-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cloud.d.ts +14 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +20 -3
- package/dist/index.js.map +1 -1
- package/package.json +3 -3
package/dist/cloud.d.ts
CHANGED
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
import { type BoardItem, type BoardItemInput, type BoardListQuery, type BoardPage, type CapabilityDeclaration, type Clock, type CoreStores, type PresenceHint, type SkillPackStore, type TenantId, type TenantReadiness } from '@byok-sdk/core';
|
|
18
18
|
import type { ActivityTail } from './activity';
|
|
19
19
|
import type { ApprovalTimelineTail } from './approval-timeline';
|
|
20
|
-
import { type Envelope, type AgentContentReadPayload, type TaskOfferPayload, type TaskOfferForAgentPayload, type TaskOfferForAgentWithEgressPayload, type TaskOfferWithToolsetsPayload } from '@byok-sdk/protocol';
|
|
20
|
+
import { type Envelope, type AgentContentReadPayload, type TaskOfferPayload, type TaskOfferForAgentPayload, type TaskOfferForAgentWithEgressPayload, type TaskOfferForAgentWithEgressFreshPayload, type TaskOfferWithToolsetsPayload } from '@byok-sdk/protocol';
|
|
21
21
|
import type { TokenSigner } from './auth/tokens';
|
|
22
22
|
import type { CloudCrypto } from './crypto/port';
|
|
23
23
|
import { type RouteDescriptor } from './router/registry';
|
|
@@ -114,6 +114,13 @@ export interface AgentEgressDispatchInput {
|
|
|
114
114
|
readonly taskId?: string;
|
|
115
115
|
readonly payload: TaskOfferForAgentWithEgressPayload;
|
|
116
116
|
}
|
|
117
|
+
/** Strict Agent dispatch whose selected runtime mints its session after start. */
|
|
118
|
+
export interface AgentEgressFreshSessionDispatchInput {
|
|
119
|
+
/** Supply one to make the enqueue addressable by the host's own id; otherwise cloud mints one. */
|
|
120
|
+
readonly taskId?: string;
|
|
121
|
+
/** Deliberately session-free strict payload for the fresh-runtime path. */
|
|
122
|
+
readonly payload: TaskOfferForAgentWithEgressFreshPayload;
|
|
123
|
+
}
|
|
117
124
|
/** A task-free, independently capability-gated Agent content read. */
|
|
118
125
|
export interface AgentContentReadInput {
|
|
119
126
|
readonly payload: AgentContentReadPayload;
|
|
@@ -165,6 +172,12 @@ export interface ByokCloud {
|
|
|
165
172
|
* egress/reliable-ack capabilities reject before a mailbox row is allocated.
|
|
166
173
|
*/
|
|
167
174
|
enqueueAgentEgressOffer(tenant: TenantId, deviceId: string, input: AgentEgressDispatchInput): Promise<EnqueuedOffer>;
|
|
175
|
+
/**
|
|
176
|
+
* Host control plane: enqueue the distinct fresh-session egress offer.
|
|
177
|
+
* The device must durably advertise fresh-session support before task or
|
|
178
|
+
* mailbox reservation, so older resume-only daemons never receive it.
|
|
179
|
+
*/
|
|
180
|
+
enqueueFreshAgentEgressOffer(tenant: TenantId, deviceId: string, input: AgentEgressFreshSessionDispatchInput): Promise<EnqueuedOffer>;
|
|
168
181
|
/** Host control plane: request one policy-bound content read without a task fallback. */
|
|
169
182
|
enqueueAgentContentRead(tenant: TenantId, deviceId: string, input: AgentContentReadInput): Promise<EnqueuedAgentControl>;
|
|
170
183
|
/** Host control plane: durably request cancellation by tenant/task id. Idempotent. */
|
package/dist/index.d.ts
CHANGED
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
export { isTenantId, tenantId } from '@byok-sdk/core';
|
|
16
16
|
export type { TenantId } from '@byok-sdk/core';
|
|
17
17
|
export { createByokCloud } from './cloud';
|
|
18
|
-
export type { ByokCloud, ByokCloudOptions, AgentDispatchInput, AgentEgressDispatchInput, AgentContentReadInput, EnqueueOfferInput, EnqueueToolsetOfferInput, EnqueuedAgentControl, EnqueuedOffer, } from './cloud';
|
|
18
|
+
export type { ByokCloud, ByokCloudOptions, AgentDispatchInput, AgentEgressDispatchInput, AgentEgressFreshSessionDispatchInput, AgentContentReadInput, EnqueueOfferInput, EnqueueToolsetOfferInput, EnqueuedAgentControl, EnqueuedOffer, } from './cloud';
|
|
19
19
|
export { AGENT_HOME_CONTRACT_CAPABILITY, DEFAULT_EVENTS_PAGE_LIMIT, DEFAULT_LONG_POLL_HOLD_MS, DEFAULT_LONG_POLL_INTERVAL_MS, DEFAULT_MAX_BLOB_SIZE_BYTES, } from './cloud';
|
|
20
20
|
export { DEFAULT_BOARD_PAGE_LIMIT, DEFAULT_BOARD_STREAM_HEARTBEAT_INTERVAL_MS, DEFAULT_BOARD_STREAM_QUERY_INTERVAL_MS, DEFAULT_BOARD_STREAM_RECONCILIATION_INTERVAL_MS, } from './handlers/board';
|
|
21
21
|
export { DEFAULT_SKILL_PACK_PAGE_LIMIT } from './handlers/skill-packs';
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { BOARD_STATUSES, CapabilityDeclarationSchema, NONCE_SIGNING_DOMAIN, hasCapability, isTenantId, tenantId, principalTenant, parseDeviceProofEnvelope, deviceProofSigningInput, contentHash, parseCapabilityDeclaration, ByokCoreError, tenantKey, PRESENCE_LEVELS, createInMemoryCoreStores, authenticateDeviceAssertion, assertCapability, isCoreConflictError, isCoreError, DEVICE_PROOF_HEADER, TRUTH_RECORD_KINDS, STORAGE_ERROR_CODES, STORAGE_ERROR_HTTP_STATUS } from '@byok-sdk/core';
|
|
2
2
|
export { DEVICE_PROOF_HEADER, NONCE_SIGNING_DOMAIN, isTenantId, tenantId } from '@byok-sdk/core';
|
|
3
|
-
import { AgentEventOrUnknownSchema, PROTOCOL_VERSION, DAEMON_TO_SERVER_TYPES, AGENT_EGRESS_RELIABLE_ACK_CAPABILITY, encodeEnvelope, decodeEnvelope, BYOK_PAIR_PATH, BYOK_CHALLENGE_PATH, BYOK_TOKEN_PATH, BYOK_CAPABILITIES_PATH, BYOK_EVENTS_PATH, BYOK_MESSAGES_PATH, BYOK_BOARD_PATH, BYOK_BOARD_CLAIM_ROUTE, BYOK_BOARD_UNCLAIM_ROUTE, BYOK_BOARD_STATUS_ROUTE, BYOK_BOARD_STREAM_PATH, BYOK_PRESENCE_PATH, BYOK_ACTIVITY_PATH, BYOK_RECORDS_PATH, BYOK_RECORD_ROUTE, BYOK_SKILL_PACKS_PATH, BYOK_SKILL_PACK_FILE_ROUTE, BYOK_BLOBS_PATH, BYOK_BLOB_FINALIZE_ROUTE, BYOK_BLOB_URL_ROUTE, BYOK_BLOB_CONTENT_ROUTE, createEnvelope, AgentContentReadPayloadSchema, AGENT_EGRESS_POLICY_CAPABILITY, TaskOfferForAgentWithEgressPayloadSchema, TaskOfferForAgentPayloadSchema, AGENT_CONTENT_ARTIFACT_READ_CAPABILITY, AGENT_CONTENT_TRANSCRIPT_READ_CAPABILITY, AGENT_CONTENT_WORKSPACE_READ_CAPABILITY, PairRequestSchema, PairResponseSchema, ChallengeRequestSchema, TokenRequestSchema, MessagesSendRequestSchema, PresencePublishRequestSchema, CreateBlobRequestSchema, byokBlobContentPath, AgentEgressAckPayloadSchema, AgentContentReceiptPayloadSchema } from '@byok-sdk/protocol';
|
|
3
|
+
import { AgentEventOrUnknownSchema, PROTOCOL_VERSION, DAEMON_TO_SERVER_TYPES, AGENT_EGRESS_RELIABLE_ACK_CAPABILITY, encodeEnvelope, decodeEnvelope, BYOK_PAIR_PATH, BYOK_CHALLENGE_PATH, BYOK_TOKEN_PATH, BYOK_CAPABILITIES_PATH, BYOK_EVENTS_PATH, BYOK_MESSAGES_PATH, BYOK_BOARD_PATH, BYOK_BOARD_CLAIM_ROUTE, BYOK_BOARD_UNCLAIM_ROUTE, BYOK_BOARD_STATUS_ROUTE, BYOK_BOARD_STREAM_PATH, BYOK_PRESENCE_PATH, BYOK_ACTIVITY_PATH, BYOK_RECORDS_PATH, BYOK_RECORD_ROUTE, BYOK_SKILL_PACKS_PATH, BYOK_SKILL_PACK_FILE_ROUTE, BYOK_BLOBS_PATH, BYOK_BLOB_FINALIZE_ROUTE, BYOK_BLOB_URL_ROUTE, BYOK_BLOB_CONTENT_ROUTE, createEnvelope, AgentContentReadPayloadSchema, AGENT_EGRESS_POLICY_CAPABILITY, TaskOfferForAgentWithEgressFreshPayloadSchema, TaskOfferForAgentWithEgressPayloadSchema, TaskOfferForAgentPayloadSchema, AGENT_CONTENT_ARTIFACT_READ_CAPABILITY, AGENT_CONTENT_TRANSCRIPT_READ_CAPABILITY, AGENT_CONTENT_WORKSPACE_READ_CAPABILITY, AGENT_EGRESS_FRESH_SESSION_CAPABILITY, PairRequestSchema, PairResponseSchema, ChallengeRequestSchema, TokenRequestSchema, MessagesSendRequestSchema, PresencePublishRequestSchema, CreateBlobRequestSchema, byokBlobContentPath, AgentEgressAckPayloadSchema, AgentContentReceiptPayloadSchema } from '@byok-sdk/protocol';
|
|
4
4
|
import { z } from 'zod';
|
|
5
5
|
import { Hono } from 'hono';
|
|
6
6
|
|
|
@@ -793,6 +793,7 @@ var CLOUD_PROTOCOL_CAPABILITIES = [
|
|
|
793
793
|
"agent-home-contract",
|
|
794
794
|
"agent-egress-policy",
|
|
795
795
|
"agent-egress-reliable-ack",
|
|
796
|
+
"agent-egress-fresh-session",
|
|
796
797
|
"agent-content-workspace-read",
|
|
797
798
|
"agent-content-transcript-read",
|
|
798
799
|
"agent-content-artifact-read"
|
|
@@ -828,13 +829,13 @@ function eventsHandler(deps) {
|
|
|
828
829
|
if (page.messages.length === 0) break;
|
|
829
830
|
const decoded = page.messages.map((message) => decodeEnvelope(message.body));
|
|
830
831
|
const offeredTaskIds = decoded.flatMap(
|
|
831
|
-
(event) => (event.type === "task.offer" || event.type === "task.offer_with_toolsets" || event.type === "task.offer_for_agent" || event.type === "task.offer_for_agent_with_egress") && event.task_id !== void 0 ? [event.task_id] : []
|
|
832
|
+
(event) => (event.type === "task.offer" || event.type === "task.offer_with_toolsets" || event.type === "task.offer_for_agent" || event.type === "task.offer_for_agent_with_egress" || event.type === "task.offer_for_agent_with_egress_fresh") && event.task_id !== void 0 ? [event.task_id] : []
|
|
832
833
|
);
|
|
833
834
|
const attemptsByTaskId = Object.fromEntries(
|
|
834
835
|
(await stores.tasks.getMany(offeredTaskIds)).map((attempt2) => [attempt2.taskId, attempt2])
|
|
835
836
|
);
|
|
836
837
|
const events = decoded.filter((event) => {
|
|
837
|
-
if (event.type !== "task.offer" && event.type !== "task.offer_with_toolsets" && event.type !== "task.offer_for_agent" && event.type !== "task.offer_for_agent_with_egress") {
|
|
838
|
+
if (event.type !== "task.offer" && event.type !== "task.offer_with_toolsets" && event.type !== "task.offer_for_agent" && event.type !== "task.offer_for_agent_with_egress" && event.type !== "task.offer_for_agent_with_egress_fresh") {
|
|
838
839
|
return true;
|
|
839
840
|
}
|
|
840
841
|
return event.task_id === void 0 || attemptsByTaskId[event.task_id]?.cancellation === void 0;
|
|
@@ -2428,6 +2429,22 @@ function createByokCloud(options) {
|
|
|
2428
2429
|
(taskId, seq, messageId) => createEnvelope("task.offer_for_agent_with_egress", payload, { id: messageId, taskId, seq })
|
|
2429
2430
|
);
|
|
2430
2431
|
},
|
|
2432
|
+
async enqueueFreshAgentEgressOffer(tenant, deviceId, input) {
|
|
2433
|
+
await assertAgentCapabilities(tenant, deviceId, [
|
|
2434
|
+
AGENT_HOME_CONTRACT_CAPABILITY,
|
|
2435
|
+
AGENT_EGRESS_POLICY_CAPABILITY,
|
|
2436
|
+
AGENT_EGRESS_RELIABLE_ACK_CAPABILITY,
|
|
2437
|
+
AGENT_EGRESS_FRESH_SESSION_CAPABILITY
|
|
2438
|
+
]);
|
|
2439
|
+
const payload = TaskOfferForAgentWithEgressFreshPayloadSchema.parse(input.payload);
|
|
2440
|
+
return enqueueTaskEnvelope(
|
|
2441
|
+
tenant,
|
|
2442
|
+
deviceId,
|
|
2443
|
+
input.taskId,
|
|
2444
|
+
payload.agentRef,
|
|
2445
|
+
(taskId, seq, messageId) => createEnvelope("task.offer_for_agent_with_egress_fresh", payload, { id: messageId, taskId, seq })
|
|
2446
|
+
);
|
|
2447
|
+
},
|
|
2431
2448
|
async enqueueAgentContentRead(tenant, deviceId, input) {
|
|
2432
2449
|
const payload = AgentContentReadPayloadSchema.parse(input.payload);
|
|
2433
2450
|
await assertAgentCapabilities(tenant, deviceId, [
|