@ouispec/agent-core 0.4.0 → 0.8.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.
@@ -57,6 +57,32 @@ export interface ApprovalSettlement {
57
57
  * when nobody decided it.
58
58
  */
59
59
  decided?: 'approved';
60
+ /**
61
+ * For `claimed` and `already`: set when the approval did not run out of
62
+ * time but was withdrawn (ADR-0252 §2.6). Absent when its time ran out.
63
+ */
64
+ withdrawn?: ApprovalWithdrawReason;
65
+ }
66
+ /**
67
+ * Why an approval was expired before its time (ADR-0252 §2.6):
68
+ * - `superseded`: the person sent a new message while the card waited.
69
+ * - `stopped`: the turn that asked for it was stopped as it asked.
70
+ *
71
+ * A withdrawn approval is expired from that moment: its card is dead and its
72
+ * token answers `used`. What is stored and told to the model says why, so it
73
+ * reads "withdrawn because you sent a new message", not "it timed out".
74
+ */
75
+ export type ApprovalWithdrawReason = 'superseded' | 'stopped';
76
+ export declare const APPROVAL_WITHDRAW_REASONS: readonly ApprovalWithdrawReason[];
77
+ /** The answer to withdrawing an approval (`POST /internal/approvals/:id/settle` with `expire`). */
78
+ export interface ApprovalWithdrawal {
79
+ approvalId: string;
80
+ /**
81
+ * - `withdrawn`: it was pending, or approved and not yet used, and is now expired.
82
+ * - `settled`: it had already ended (declined, used, expired or withdrawn); nothing changed.
83
+ * - `unknown`: the store holds no such approval for this owner.
84
+ */
85
+ outcome: 'withdrawn' | 'settled' | 'unknown';
60
86
  }
61
87
  /** Whose approval is asked about: the same ownership the other approval routes check. */
62
88
  export interface ApprovalOwner {
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/approvals/types.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAyB,eAAe,EAAiB,MAAM,mBAAmB,CAAC;AAE/F;;;;;GAKG;AAEH,gFAAgF;AAChF,eAAO,MAAM,qBAAqB,oBAAoB,CAAC;AAEvD,uFAAuF;AACvF,eAAO,MAAM,uBAAuB,QAAa,CAAC;AAClD,2DAA2D;AAC3D,eAAO,MAAM,mBAAmB,QAAc,CAAC;AAE/C,eAAO,MAAM,iBAAiB,EAAE,SAAS,eAAe,EAA4C,CAAC;AAErG;;;;GAIG;AACH,eAAO,MAAM,0BAA0B,QAAwB,CAAC;AAEhE;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,QAAa,CAAC;AAEhD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,MAAM,qBAAqB,GAAG,SAAS,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,GAAG,WAAW,CAAC;AAE7F,MAAM,WAAW,kBAAkB;IACjC,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,qBAAqB,CAAC;IAC/B,+DAA+D;IAC/D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;OAIG;IACH,OAAO,CAAC,EAAE,UAAU,CAAC;CACtB;AAED,yFAAyF;AACzF,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,MAAM,CAAC;CACxB;AAKD,YAAY,EACV,qBAAqB,EACrB,eAAe,EACf,oBAAoB,EACpB,qBAAqB,EACrB,oBAAoB,EACpB,gBAAgB,EAChB,cAAc,EACd,aAAa,EACb,eAAe,EACf,uBAAuB,EACvB,oBAAoB,EACpB,eAAe,EACf,qBAAqB,EACrB,qBAAqB,EACrB,cAAc,EACd,mBAAmB,EACnB,YAAY,EACZ,oBAAoB,GACrB,MAAM,mBAAmB,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/approvals/types.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAyB,eAAe,EAAiB,MAAM,mBAAmB,CAAC;AAE/F;;;;;GAKG;AAEH,gFAAgF;AAChF,eAAO,MAAM,qBAAqB,oBAAoB,CAAC;AAEvD,uFAAuF;AACvF,eAAO,MAAM,uBAAuB,QAAa,CAAC;AAClD,2DAA2D;AAC3D,eAAO,MAAM,mBAAmB,QAAc,CAAC;AAE/C,eAAO,MAAM,iBAAiB,EAAE,SAAS,eAAe,EAA4C,CAAC;AAErG;;;;GAIG;AACH,eAAO,MAAM,0BAA0B,QAAwB,CAAC;AAEhE;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,QAAa,CAAC;AAEhD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,MAAM,qBAAqB,GAAG,SAAS,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,GAAG,WAAW,CAAC;AAE7F,MAAM,WAAW,kBAAkB;IACjC,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,qBAAqB,CAAC;IAC/B,+DAA+D;IAC/D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;OAIG;IACH,OAAO,CAAC,EAAE,UAAU,CAAC;IACrB;;;OAGG;IACH,SAAS,CAAC,EAAE,sBAAsB,CAAC;CACpC;AAED;;;;;;;;GAQG;AACH,MAAM,MAAM,sBAAsB,GAAG,YAAY,GAAG,SAAS,CAAC;AAE9D,eAAO,MAAM,yBAAyB,EAAE,SAAS,sBAAsB,EAA8B,CAAC;AAEtG,mGAAmG;AACnG,MAAM,WAAW,kBAAkB;IACjC,UAAU,EAAE,MAAM,CAAC;IACnB;;;;OAIG;IACH,OAAO,EAAE,WAAW,GAAG,SAAS,GAAG,SAAS,CAAC;CAC9C;AAED,yFAAyF;AACzF,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,MAAM,CAAC;CACxB;AAKD,YAAY,EACV,qBAAqB,EACrB,eAAe,EACf,oBAAoB,EACpB,qBAAqB,EACrB,oBAAoB,EACpB,gBAAgB,EAChB,cAAc,EACd,aAAa,EACb,eAAe,EACf,uBAAuB,EACvB,oBAAoB,EACpB,eAAe,EACf,qBAAqB,EACrB,qBAAqB,EACrB,cAAc,EACd,mBAAmB,EACnB,YAAY,EACZ,oBAAoB,GACrB,MAAM,mBAAmB,CAAC"}
@@ -24,6 +24,7 @@ export const EXPIRED_APPROVAL_MEMORY_MS = 30 * 24 * 60 * 60_000;
24
24
  * stored conversation does not say "waiting" for good.
25
25
  */
26
26
  export const EXPIRY_CLAIM_LEASE_MS = 2 * 60_000;
27
+ export const APPROVAL_WITHDRAW_REASONS = ['superseded', 'stopped'];
27
28
  const requestIsOUIs = true;
28
29
  const grantIsOUIs = true;
29
30
  void requestIsOUIs;
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/approvals/types.ts"],"names":[],"mappings":"AAGA;;;;;GAKG;AAEH,gFAAgF;AAChF,MAAM,CAAC,MAAM,qBAAqB,GAAG,iBAAiB,CAAC;AAEvD,uFAAuF;AACvF,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,GAAG,MAAM,CAAC;AAClD,2DAA2D;AAC3D,MAAM,CAAC,MAAM,mBAAmB,GAAG,EAAE,GAAG,MAAM,CAAC;AAE/C,MAAM,CAAC,MAAM,iBAAiB,GAA+B,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;AAErG;;;;GAIG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,MAAM,CAAC;AAEhE;;;;;GAKG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,GAAG,MAAM,CAAC;AAsEhD,MAAM,aAAa,GAAmD,IAAI,CAAC;AAC3E,MAAM,WAAW,GAA0C,IAAI,CAAC;AAChE,KAAK,aAAa,CAAC;AACnB,KAAK,WAAW,CAAC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/approvals/types.ts"],"names":[],"mappings":"AAGA;;;;;GAKG;AAEH,gFAAgF;AAChF,MAAM,CAAC,MAAM,qBAAqB,GAAG,iBAAiB,CAAC;AAEvD,uFAAuF;AACvF,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,GAAG,MAAM,CAAC;AAClD,2DAA2D;AAC3D,MAAM,CAAC,MAAM,mBAAmB,GAAG,EAAE,GAAG,MAAM,CAAC;AAE/C,MAAM,CAAC,MAAM,iBAAiB,GAA+B,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;AAErG;;;;GAIG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,MAAM,CAAC;AAEhE;;;;;GAKG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,GAAG,MAAM,CAAC;AAqDhD,MAAM,CAAC,MAAM,yBAAyB,GAAsC,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;AA8CtG,MAAM,aAAa,GAAmD,IAAI,CAAC;AAC3E,MAAM,WAAW,GAA0C,IAAI,CAAC;AAChE,KAAK,aAAa,CAAC;AACnB,KAAK,WAAW,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from './types.js';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/attachments/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from './types.js';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/attachments/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC"}
@@ -0,0 +1,101 @@
1
+ /**
2
+ * Files the person gives the assistant (ADR-0252 §2.8–§2.13).
3
+ *
4
+ * A file is uploaded to the platform's storage first and travels by
5
+ * reference: a message, a turn and an action carry its id, never its bytes.
6
+ * The platform keeps the file in the conversation's file area, checks it, and
7
+ * hands the worker its bytes or text through a seam when a model call needs
8
+ * them.
9
+ */
10
+ /** What a file is to the assistant: what the model can be given of it. */
11
+ export type AttachmentKind = 'image' | 'text' | 'pdf' | 'other';
12
+ export declare const ATTACHMENT_KINDS: readonly AttachmentKind[];
13
+ /**
14
+ * A file as a message carries it: enough for the model's reference line and
15
+ * the panel's chip, nothing of its content. `removed` is set when the file was
16
+ * removed or is gone: the reference stays, and says so.
17
+ */
18
+ export interface AttachmentRef {
19
+ id: string;
20
+ /** The name the person's file had. Never used as a storage key. */
21
+ name: string;
22
+ /** The checked media type. */
23
+ mediaType: string;
24
+ kind: AttachmentKind;
25
+ bytes: number;
26
+ /** An image's size in pixels. */
27
+ width?: number;
28
+ height?: number;
29
+ /** A PDF's page count. */
30
+ pages?: number;
31
+ removed?: boolean;
32
+ /**
33
+ * Set while the platform is still checking the file (its malware scan): it
34
+ * is in the conversation, and cannot be read, shown or used until it passes.
35
+ */
36
+ pending?: boolean;
37
+ }
38
+ /**
39
+ * The limits a platform sets (ADR-0252 §2.9, §2.11). The composer refuses a
40
+ * file before uploading it; the platform checks again when it reserves and
41
+ * when it commits; the worker caps what the model is given.
42
+ */
43
+ export interface AttachmentLimits {
44
+ /** Files on one message. */
45
+ perMessage: number;
46
+ /** The largest file of each kind, in bytes. */
47
+ maxBytes: Record<AttachmentKind, number>;
48
+ /** Files in one conversation. */
49
+ perConversation: number;
50
+ /** Bytes in one conversation. */
51
+ bytesPerConversation: number;
52
+ /** The media types each kind takes; a file of any other type is `other`, if the platform takes it at all. */
53
+ mediaTypes: Record<Exclude<AttachmentKind, 'other'>, readonly string[]>;
54
+ }
55
+ /** The limits ADR-0252 sets as its defaults (§6.3). */
56
+ export declare const DEFAULT_ATTACHMENT_LIMITS: AttachmentLimits;
57
+ /** The kind a media type is under these limits. */
58
+ export declare function attachmentKindOf(mediaType: string, limits?: Pick<AttachmentLimits, 'mediaTypes'>): AttachmentKind;
59
+ /**
60
+ * Why a file is refused before it is uploaded, or null when it may be. The
61
+ * same check the platform makes again; the composer shows the reason on the
62
+ * file's chip.
63
+ */
64
+ export declare function attachmentRefusal(file: {
65
+ name: string;
66
+ size: number;
67
+ type: string;
68
+ }, context: {
69
+ onMessage: number;
70
+ inConversation: number;
71
+ bytesInConversation: number;
72
+ }, limits?: AttachmentLimits): string | null;
73
+ /** A size as people read it: 412 KB, 3.1 MB. */
74
+ export declare function formatBytes(bytes: number): string;
75
+ /** The most characters of a file's name the model is given. */
76
+ export declare const ATTACHMENT_NAME_MAX_CHARS = 120;
77
+ /**
78
+ * A file's name as the model is given it: a JSON string, so its quotes and
79
+ * backslashes cannot end it; control, line-breaking and direction-changing
80
+ * characters taken out, so it cannot start a line of its own or read
81
+ * backwards; angle brackets escaped, so it cannot open or close a tag; and at
82
+ * most 120 characters. The name is the person's file's, and
83
+ * the person may not have chosen it: it is data, never an instruction.
84
+ */
85
+ export declare function attachmentNameForModel(name: string): string;
86
+ /** A media type as the model is given it: a token of the form `type/subtype`, or `unknown type`. */
87
+ export declare function mediaTypeForModel(mediaType: string): string;
88
+ /**
89
+ * The line a file leaves in the conversation for the model: its id, name,
90
+ * type and size, and an image's size in pixels. A later turn reads this, not
91
+ * the file: the assistant looks again with `attachment_view` or reads with
92
+ * `attachment_read`. The name is quoted and cleaned (`attachmentNameForModel`).
93
+ */
94
+ export declare function attachmentReferenceLine(ref: AttachmentRef): string;
95
+ /**
96
+ * The JSON Schema `format` of an action input that takes a file the person
97
+ * attached, and the shape of an attachment's id (ADR-0252 §2.13): the
98
+ * protocol's (OUI spec §7.3.11).
99
+ */
100
+ export { OUI_ATTACHMENT_FORMAT as ATTACHMENT_FORMAT, isAttachmentId, attachmentInputOf, attachmentIdsIn, acceptsMediaType, misplacedAttachmentInputs, type OUIAttachmentInput, } from 'oui-spec/spec';
101
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/attachments/types.ts"],"names":[],"mappings":"AAEA;;;;;;;;GAQG;AAEH,0EAA0E;AAC1E,MAAM,MAAM,cAAc,GAAG,OAAO,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,CAAC;AAEhE,eAAO,MAAM,gBAAgB,EAAE,SAAS,cAAc,EAAsC,CAAC;AAE7F;;;;GAIG;AACH,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,mEAAmE;IACnE,IAAI,EAAE,MAAM,CAAC;IACb,8BAA8B;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,cAAc,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,iCAAiC;IACjC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,0BAA0B;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;;;GAIG;AACH,MAAM,WAAW,gBAAgB;IAC/B,4BAA4B;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,+CAA+C;IAC/C,QAAQ,EAAE,MAAM,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;IACzC,iCAAiC;IACjC,eAAe,EAAE,MAAM,CAAC;IACxB,iCAAiC;IACjC,oBAAoB,EAAE,MAAM,CAAC;IAC7B,6GAA6G;IAC7G,UAAU,EAAE,MAAM,CAAC,OAAO,CAAC,cAAc,EAAE,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC,CAAC;CACzE;AAED,uDAAuD;AACvD,eAAO,MAAM,yBAAyB,EAAE,gBA0BvC,CAAC;AAEF,mDAAmD;AACnD,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,GAAE,IAAI,CAAC,gBAAgB,EAAE,YAAY,CAA6B,GAAG,cAAc,CAM5I;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,EAClD,OAAO,EAAE;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,cAAc,EAAE,MAAM,CAAC;IAAC,mBAAmB,EAAE,MAAM,CAAA;CAAE,EACnF,MAAM,GAAE,gBAA4C,GACnD,MAAM,GAAG,IAAI,CAUf;AAED,gDAAgD;AAChD,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAKjD;AAED,+DAA+D;AAC/D,eAAO,MAAM,yBAAyB,MAAM,CAAC;AAE7C;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAU3D;AAED,oGAAoG;AACpG,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAG3D;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,aAAa,GAAG,MAAM,CAWlE;AAED;;;;GAIG;AACH,OAAO,EACL,qBAAqB,IAAI,iBAAiB,EAC1C,cAAc,EACd,iBAAiB,EACjB,eAAe,EACf,gBAAgB,EAChB,yBAAyB,EACzB,KAAK,kBAAkB,GACxB,MAAM,eAAe,CAAC"}
@@ -0,0 +1,123 @@
1
+ import { isAttachmentId } from 'oui-spec/spec';
2
+ export const ATTACHMENT_KINDS = ['image', 'text', 'pdf', 'other'];
3
+ /** The limits ADR-0252 sets as its defaults (§6.3). */
4
+ export const DEFAULT_ATTACHMENT_LIMITS = {
5
+ perMessage: 5,
6
+ maxBytes: { image: 20 * 1024 * 1024, text: 2 * 1024 * 1024, pdf: 20 * 1024 * 1024, other: 100 * 1024 * 1024 },
7
+ perConversation: 50,
8
+ bytesPerConversation: 500 * 1024 * 1024,
9
+ mediaTypes: {
10
+ image: ['image/png', 'image/jpeg', 'image/webp', 'image/gif'],
11
+ text: [
12
+ 'text/plain',
13
+ 'text/markdown',
14
+ 'text/csv',
15
+ 'application/json',
16
+ 'application/xml',
17
+ 'text/xml',
18
+ 'image/svg+xml',
19
+ 'text/html',
20
+ 'text/css',
21
+ 'text/javascript',
22
+ 'application/javascript',
23
+ 'application/typescript',
24
+ 'text/x-python',
25
+ 'application/x-yaml',
26
+ 'text/yaml',
27
+ ],
28
+ pdf: ['application/pdf'],
29
+ },
30
+ };
31
+ /** The kind a media type is under these limits. */
32
+ export function attachmentKindOf(mediaType, limits = DEFAULT_ATTACHMENT_LIMITS) {
33
+ const type = mediaType.split(';')[0].trim().toLowerCase();
34
+ if (limits.mediaTypes.image.includes(type))
35
+ return 'image';
36
+ if (limits.mediaTypes.pdf.includes(type))
37
+ return 'pdf';
38
+ if (limits.mediaTypes.text.includes(type) || type.startsWith('text/'))
39
+ return 'text';
40
+ return 'other';
41
+ }
42
+ /**
43
+ * Why a file is refused before it is uploaded, or null when it may be. The
44
+ * same check the platform makes again; the composer shows the reason on the
45
+ * file's chip.
46
+ */
47
+ export function attachmentRefusal(file, context, limits = DEFAULT_ATTACHMENT_LIMITS) {
48
+ if (context.onMessage >= limits.perMessage)
49
+ return `A message takes at most ${limits.perMessage} files.`;
50
+ if (context.inConversation >= limits.perConversation)
51
+ return `A conversation takes at most ${limits.perConversation} files.`;
52
+ const kind = attachmentKindOf(file.type || 'application/octet-stream', limits);
53
+ if (file.size > limits.maxBytes[kind])
54
+ return `Too large: a ${kind === 'other' ? '' : `${kind} `}file may be at most ${formatBytes(limits.maxBytes[kind])}.`;
55
+ if (context.bytesInConversation + file.size > limits.bytesPerConversation) {
56
+ return `The conversation's files may total at most ${formatBytes(limits.bytesPerConversation)}.`;
57
+ }
58
+ if (file.size === 0)
59
+ return 'The file is empty.';
60
+ return null;
61
+ }
62
+ /** A size as people read it: 412 KB, 3.1 MB. */
63
+ export function formatBytes(bytes) {
64
+ if (bytes < 1024)
65
+ return `${bytes} B`;
66
+ if (bytes < 1024 * 1024)
67
+ return `${Math.round(bytes / 1024)} KB`;
68
+ if (bytes < 1024 * 1024 * 1024)
69
+ return `${(bytes / (1024 * 1024)).toFixed(bytes < 10 * 1024 * 1024 ? 1 : 0)} MB`;
70
+ return `${(bytes / (1024 * 1024 * 1024)).toFixed(1)} GB`;
71
+ }
72
+ /** The most characters of a file's name the model is given. */
73
+ export const ATTACHMENT_NAME_MAX_CHARS = 120;
74
+ /**
75
+ * A file's name as the model is given it: a JSON string, so its quotes and
76
+ * backslashes cannot end it; control, line-breaking and direction-changing
77
+ * characters taken out, so it cannot start a line of its own or read
78
+ * backwards; angle brackets escaped, so it cannot open or close a tag; and at
79
+ * most 120 characters. The name is the person's file's, and
80
+ * the person may not have chosen it: it is data, never an instruction.
81
+ */
82
+ export function attachmentNameForModel(name) {
83
+ const plain = String(name ?? '')
84
+ // C0 and C1 controls, line and paragraph separators, bidi controls, zero-width joiners and BOM.
85
+ .replace(/[\p{Cc}\u2028\u2029\u200b-\u200f\u202a-\u202e\u2060-\u2064\u2066-\u2069\ufeff]/gu, ' ')
86
+ .replace(/\s+/g, ' ')
87
+ .trim();
88
+ const chars = Array.from(plain);
89
+ const capped = chars.length > ATTACHMENT_NAME_MAX_CHARS ? `${chars.slice(0, ATTACHMENT_NAME_MAX_CHARS - 1).join('')}…` : plain;
90
+ // Angle brackets as JSON escapes: a name cannot open or close a tag the model reads.
91
+ return JSON.stringify(capped || 'unnamed').replace(/</g, '\\u003c').replace(/>/g, '\\u003e');
92
+ }
93
+ /** A media type as the model is given it: a token of the form `type/subtype`, or `unknown type`. */
94
+ export function mediaTypeForModel(mediaType) {
95
+ const type = String(mediaType ?? '').split(';')[0].trim().toLowerCase();
96
+ return /^[a-z0-9][a-z0-9!#$&^_.+-]{0,62}\/[a-z0-9][a-z0-9!#$&^_.+-]{0,62}$/.test(type) ? type : 'unknown type';
97
+ }
98
+ /**
99
+ * The line a file leaves in the conversation for the model: its id, name,
100
+ * type and size, and an image's size in pixels. A later turn reads this, not
101
+ * the file: the assistant looks again with `attachment_view` or reads with
102
+ * `attachment_read`. The name is quoted and cleaned (`attachmentNameForModel`).
103
+ */
104
+ export function attachmentReferenceLine(ref) {
105
+ const name = attachmentNameForModel(ref.name);
106
+ const id = isAttachmentId(ref.id) ? ref.id : 'unknown';
107
+ const facts = [
108
+ mediaTypeForModel(ref.mediaType),
109
+ formatBytes(Number.isFinite(ref.bytes) ? ref.bytes : 0),
110
+ ref.width && ref.height ? `${Math.round(ref.width)}×${Math.round(ref.height)} px` : null,
111
+ ref.pages ? `${Math.round(ref.pages)} page${ref.pages === 1 ? '' : 's'}` : null,
112
+ ].filter(Boolean);
113
+ if (ref.removed)
114
+ return `[Attachment ${id}: ${name} (removed)]`;
115
+ return `[Attachment ${id}: ${name}, ${facts.join(', ')}${ref.pending ? ', still being checked' : ''}]`;
116
+ }
117
+ /**
118
+ * The JSON Schema `format` of an action input that takes a file the person
119
+ * attached, and the shape of an attachment's id (ADR-0252 §2.13): the
120
+ * protocol's (OUI spec §7.3.11).
121
+ */
122
+ export { OUI_ATTACHMENT_FORMAT as ATTACHMENT_FORMAT, isAttachmentId, attachmentInputOf, attachmentIdsIn, acceptsMediaType, misplacedAttachmentInputs, } from 'oui-spec/spec';
123
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/attachments/types.ts"],"names":[],"mappings":"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"}
package/dist/browser.d.ts CHANGED
@@ -5,4 +5,5 @@ export * from './protocol/index.js';
5
5
  export * from './entity/index.js';
6
6
  export * from './ui-surface/index.js';
7
7
  export * from './approvals/index.js';
8
+ export * from './turns/index.js';
8
9
  //# sourceMappingURL=browser.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../src/browser.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC"}
1
+ {"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../src/browser.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC"}
package/dist/browser.js CHANGED
@@ -5,4 +5,5 @@ export * from './protocol/index.js';
5
5
  export * from './entity/index.js';
6
6
  export * from './ui-surface/index.js';
7
7
  export * from './approvals/index.js';
8
+ export * from './turns/index.js';
8
9
  //# sourceMappingURL=browser.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"browser.js","sourceRoot":"","sources":["../src/browser.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC"}
1
+ {"version":3,"file":"browser.js","sourceRoot":"","sources":["../src/browser.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC"}
package/dist/index.d.ts CHANGED
@@ -6,4 +6,6 @@ export * from './protocol/index.js';
6
6
  export * from './entity/index.js';
7
7
  export * from './ui-surface/index.js';
8
8
  export * from './approvals/index.js';
9
+ export * from './turns/index.js';
10
+ export * from './attachments/index.js';
9
11
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,wBAAwB,CAAC"}
package/dist/index.js CHANGED
@@ -6,4 +6,6 @@ export * from './protocol/index.js';
6
6
  export * from './entity/index.js';
7
7
  export * from './ui-surface/index.js';
8
8
  export * from './approvals/index.js';
9
+ export * from './turns/index.js';
10
+ export * from './attachments/index.js';
9
11
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,wBAAwB,CAAC"}
@@ -1,4 +1,5 @@
1
1
  import type { ApprovalRequiredEvent } from '../approvals/types.js';
2
+ import { type TurnStoppedReason } from '../turns/types.js';
2
3
  /**
3
4
  * Canonical Socket.IO event names of an agent turn. Declared with their
4
5
  * payloads among the platform's events (`PLATFORM_EVENTS`,
@@ -176,6 +177,12 @@ export interface DoneEvent {
176
177
  totalTokens: number;
177
178
  };
178
179
  maxRoundsReached?: boolean;
180
+ /**
181
+ * Set when the turn did not end by itself (ADR-0252): the person stopped it,
182
+ * a newer message superseded it, or it ran out of time. What it had produced
183
+ * is stored.
184
+ */
185
+ stopReason?: TurnStoppedReason;
179
186
  }
180
187
  /**
181
188
  * Maps a raw Socket.IO event (name + payload) to an AgentProtocolEvent.
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/protocol/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/protocol/index.ts"],"names":[],"mappings":"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"}
@@ -3,6 +3,7 @@
3
3
  * Richer than MCP; designed for deeply integrated hosts.
4
4
  */
5
5
  import { AGENT_TURN_EVENTS } from '@ouispec/agent-events';
6
+ import { isTurnStoppedReason } from '../turns/types.js';
6
7
  /**
7
8
  * Canonical Socket.IO event names of an agent turn. Declared with their
8
9
  * payloads among the platform's events (`PLATFORM_EVENTS`,
@@ -79,6 +80,7 @@ export function parseSocketEvent(event, data, fallbackTurnId) {
79
80
  turnId,
80
81
  messageId: payload.messageId,
81
82
  usage: payload.usage,
83
+ ...(isTurnStoppedReason(payload.stopReason) ? { stopReason: payload.stopReason } : {}),
82
84
  };
83
85
  case AGENT_SOCKET_EVENTS.TURN_ERROR: {
84
86
  const errObj = (payload.error ?? payload);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/protocol/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/protocol/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE1D,OAAO,EAAE,mBAAmB,EAA0B,MAAM,mBAAmB,CAAC;AAEhF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,iBAAiB,CAAC;AAIrD,MAAM,CAAC,MAAM,uBAAuB,GAA2B,MAAM,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;AAElG;;;;;GAKG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE,aAAa,EAAE,IAAI,EAAE,SAAS,EAAW,CAAC;AAEnG;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAAC,IAA2D;IAI3F,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC;IACtC,IAAI,IAAI,CAAC,IAAI,KAAK,cAAc,CAAC,GAAG,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IAC3F,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC;IACpC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,KAAgC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;AAC1H,CAAC;AA2HD;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAa,EAAE,IAAa,EAAE,cAAsB;IACnF,MAAM,OAAO,GAAG,CAAC,IAAI,IAAI,EAAE,CAA4B,CAAC;IACxD,MAAM,MAAM,GAAI,OAAO,CAAC,MAAiB,IAAI,cAAc,CAAC;IAE5D,QAAQ,KAAK,EAAE,CAAC;QACd,KAAK,mBAAmB,CAAC,YAAY;YACnC,+DAA+D;YAC/D,OAAO,IAAI,CAAC;QAEd,KAAK,mBAAmB,CAAC,KAAK;YAC5B,OAAO;gBACL,IAAI,EAAE,OAAO;gBACb,OAAO,EAAG,OAAO,CAAC,IAAe,IAAK,OAAO,CAAC,KAAgB,IAAK,OAAO,CAAC,OAAkB,IAAI,EAAE;gBACnG,MAAM;aACP,CAAC;QAEJ,KAAK,mBAAmB,CAAC,WAAW;YAClC,OAAO;gBACL,IAAI,EAAE,aAAa;gBACnB,MAAM;aACP,CAAC;QAEJ,KAAK,mBAAmB,CAAC,iBAAiB;YACxC,OAAO;gBACL,IAAI,EAAE,aAAa;gBACnB,EAAE,EAAG,OAAO,CAAC,MAAiB,IAAK,OAAO,CAAC,SAAoB,IAAI,MAAM,CAAC,UAAU,EAAE;gBACtF,QAAQ,EAAG,OAAO,CAAC,QAAmB,IAAK,OAAO,CAAC,IAAe,IAAI,SAAS;gBAC/E,oDAAoD;gBACpD,UAAU,EACP,OAAO,CAAC,KAAiC;oBACzC,OAAO,CAAC,UAAsC;oBAC9C,OAAO,CAAC,IAAgC;oBACzC,EAAE;gBACJ,MAAM;aACP,CAAC;QAEJ,KAAK,mBAAmB,CAAC,kBAAkB;YACzC,OAAO;gBACL,IAAI,EAAE,eAAe;gBACrB,MAAM,EAAG,OAAO,CAAC,MAAiB,IAAK,OAAO,CAAC,SAAoB,IAAI,EAAE;gBACzE,QAAQ,EAAG,OAAO,CAAC,QAAmB,IAAK,OAAO,CAAC,IAAe,IAAI,SAAS;gBAC/E,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,IAAI,IAAI;gBAChD,OAAO,EAAG,OAAO,CAAC,OAAmB,IAAI,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC;gBACzD,UAAU,EAAG,OAAO,CAAC,UAAqB,IAAI,CAAC;gBAC/C,MAAM;aACP,CAAC;QAEJ,KAAK,mBAAmB,CAAC,aAAa;YACpC,OAAO;gBACL,IAAI,EAAE,MAAM;gBACZ,MAAM;gBACN,SAAS,EAAE,OAAO,CAAC,SAA+B;gBAClD,KAAK,EAAE,OAAO,CAAC,KAA4F;gBAC3G,GAAG,CAAC,mBAAmB,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACvF,CAAC;QAEJ,KAAK,mBAAmB,CAAC,UAAU,CAAC,CAAC,CAAC;YACpC,MAAM,MAAM,GAAG,CAAC,OAAO,CAAC,KAAK,IAAI,OAAO,CAA4B,CAAC;YACrE,OAAO;gBACL,IAAI,EAAE,OAAO;gBACb,IAAI,EAAG,MAAM,CAAC,IAAe,IAAI,YAAY;gBAC7C,OAAO,EAAG,MAAM,CAAC,OAAkB,IAAI,uBAAuB;gBAC9D,MAAM;gBACN,WAAW,EAAG,MAAM,CAAC,WAAuB,IAAI,KAAK;aACtD,CAAC;QACJ,CAAC;QAED,KAAK,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAAC;YAC/B,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAqD,CAAC;YAC/E,MAAM,YAAY,GAAI,OAAO,CAAC,OAAkB;mBAC3C,CAAC,OAAO,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAE,QAAoC,EAAE,OAA6B,CAAC;mBAChH,mBAAmB,CAAC;YACzB,OAAO;gBACL,IAAI,EAAE,OAAO;gBACb,IAAI,EAAG,OAAO,CAAC,IAAe,IAAI,CAAC,OAAO,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAE,QAAoC,EAAE,IAAc,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,aAAa;gBACrJ,OAAO,EAAE,YAAY;gBACrB,MAAM;gBACN,WAAW,EAAG,OAAO,CAAC,WAAuB,IAAI,CAAC,OAAO,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAE,QAAoC,EAAE,WAAsB,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK;aACjK,CAAC;QACJ,CAAC;QAID,KAAK,mBAAmB,CAAC,iBAAiB,CAAC,CAAC,CAAC;YAC3C,MAAM,KAAK,GAAG,OAAyC,CAAC;YACxD,OAAO;gBACL,IAAI,EAAE,mBAAmB;gBACzB,MAAM;gBACN,cAAc,EAAE,KAAK,CAAC,cAAc,IAAI,EAAE;gBAC1C,UAAU,EAAE,KAAK,CAAC,UAAU,IAAI,EAAE;gBAClC,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,EAAE;gBACtB,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,OAAO;gBAC/B,WAAW,EAAE,KAAK,CAAC,WAAW,IAAI,KAAK;gBACvC,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,IAAI,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE;gBAClF,SAAS,EAAE,KAAK,CAAC,SAAS,IAAI,CAAC;aAChC,CAAC;QACJ,CAAC;QAED;YACE,OAAO,IAAI,CAAC;IAChB,CAAC;AACH,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from './types.js';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/turns/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from './types.js';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/turns/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC"}
@@ -0,0 +1,80 @@
1
+ /**
2
+ * Stopping a turn (ADR-0252): the shapes the tab, the realtime server, the
3
+ * worker and a host's API exchange when a person stops a running turn, or
4
+ * sends a new message that supersedes it.
5
+ *
6
+ * A stop is a request kept by the realtime server. The worker has no socket:
7
+ * it asks for the request, as it asks for UI answers and approvals.
8
+ */
9
+ /** The client event a user's socket sends to stop its own running turn. */
10
+ export declare const TURN_STOP_EVENT = "agent:turn_stop";
11
+ /**
12
+ * Why a turn was stopped:
13
+ * - `user_stop`: the person pressed Stop.
14
+ * - `superseded`: a newer message arrived in the conversation, and it runs instead.
15
+ */
16
+ export type TurnStopReason = 'user_stop' | 'superseded';
17
+ export declare const TURN_STOP_REASONS: readonly TurnStopReason[];
18
+ export declare function isTurnStopReason(value: unknown): value is TurnStopReason;
19
+ /**
20
+ * Why a turn ended on the stop path, keeping what it had produced: a stop that
21
+ * was asked for (`TurnStopReason`), or its own deadline (`deadline`: it ran
22
+ * out of time, ADR-0252 §6.4). Nobody asks for `deadline`: it is never a
23
+ * stop request, only a stopped turn's reason.
24
+ */
25
+ export type TurnStoppedReason = TurnStopReason | 'deadline';
26
+ export declare const TURN_STOPPED_REASONS: readonly TurnStoppedReason[];
27
+ export declare function isTurnStoppedReason(value: unknown): value is TurnStoppedReason;
28
+ /**
29
+ * What the tab sends with `TURN_STOP_EVENT`. A stop from a socket is always
30
+ * the person's own (`user_stop`). `room` is the turn's room, which the tab
31
+ * joined with the turn's room token: being in it is what shows the turn is
32
+ * this user's.
33
+ */
34
+ export interface TurnStopPayload {
35
+ turnId: string;
36
+ room: string;
37
+ }
38
+ /**
39
+ * The server's answer to `TURN_STOP_EVENT`.
40
+ * - `requested`: the stop is recorded; the turn's worker hears it and ends the turn.
41
+ * - `already`: a stop was recorded before this one; that one stands.
42
+ */
43
+ export type TurnStopResult = {
44
+ ok: true;
45
+ stop: 'requested' | 'already';
46
+ } | {
47
+ ok: false;
48
+ reason: 'not_in_turn_room' | 'invalid' | 'unavailable';
49
+ };
50
+ /** The stop the realtime server keeps for a turn, written once. */
51
+ export interface TurnStopRecord {
52
+ turnId: string;
53
+ /** The user who asked, or on whose behalf the host asked. */
54
+ by: string;
55
+ reason: TurnStopReason;
56
+ /** Epoch ms, by the store's clock. */
57
+ at: number;
58
+ }
59
+ /**
60
+ * How long the server keeps a stop: far longer than any turn runs, so a worker
61
+ * that was slow to start, or whose watch failed and retried, still hears it.
62
+ */
63
+ export declare const TURN_STOP_RECORD_TTL_MS: number;
64
+ /**
65
+ * A stopped turn's mark on its last stored assistant message. A later turn's
66
+ * history says, after that message's text, that the turn was stopped there.
67
+ */
68
+ export interface TurnStoppedMarker {
69
+ reason: TurnStoppedReason;
70
+ /** Epoch ms. */
71
+ at: number;
72
+ }
73
+ /**
74
+ * The line a stopped turn leaves in the conversation: what a later turn's
75
+ * model reads after the stopped message's text, and the whole text of a
76
+ * stopped message that has none (a model provider refuses an empty text
77
+ * block, so a stopped turn that produced nothing still says this).
78
+ */
79
+ export declare function turnStoppedNote(marker: Pick<TurnStoppedMarker, 'reason'>): string;
80
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/turns/types.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,2EAA2E;AAC3E,eAAO,MAAM,eAAe,oBAAoB,CAAC;AAEjD;;;;GAIG;AACH,MAAM,MAAM,cAAc,GAAG,WAAW,GAAG,YAAY,CAAC;AAExD,eAAO,MAAM,iBAAiB,EAAE,SAAS,cAAc,EAAgC,CAAC;AAExF,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,cAAc,CAExE;AAED;;;;;GAKG;AACH,MAAM,MAAM,iBAAiB,GAAG,cAAc,GAAG,UAAU,CAAC;AAE5D,eAAO,MAAM,oBAAoB,EAAE,SAAS,iBAAiB,EAAuC,CAAC;AAErG,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,iBAAiB,CAE9E;AAED;;;;;GAKG;AACH,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;;GAIG;AACH,MAAM,MAAM,cAAc,GACtB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,WAAW,GAAG,SAAS,CAAA;CAAE,GAC3C;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,kBAAkB,GAAG,SAAS,GAAG,aAAa,CAAA;CAAE,CAAC;AAE1E,mEAAmE;AACnE,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,6DAA6D;IAC7D,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,cAAc,CAAC;IACvB,sCAAsC;IACtC,EAAE,EAAE,MAAM,CAAC;CACZ;AAED;;;GAGG;AACH,eAAO,MAAM,uBAAuB,QAAc,CAAC;AAEnD;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,iBAAiB,CAAC;IAC1B,gBAAgB;IAChB,EAAE,EAAE,MAAM,CAAC;CACZ;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,IAAI,CAAC,iBAAiB,EAAE,QAAQ,CAAC,GAAG,MAAM,CASjF"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * Stopping a turn (ADR-0252): the shapes the tab, the realtime server, the
3
+ * worker and a host's API exchange when a person stops a running turn, or
4
+ * sends a new message that supersedes it.
5
+ *
6
+ * A stop is a request kept by the realtime server. The worker has no socket:
7
+ * it asks for the request, as it asks for UI answers and approvals.
8
+ */
9
+ /** The client event a user's socket sends to stop its own running turn. */
10
+ export const TURN_STOP_EVENT = 'agent:turn_stop';
11
+ export const TURN_STOP_REASONS = ['user_stop', 'superseded'];
12
+ export function isTurnStopReason(value) {
13
+ return typeof value === 'string' && TURN_STOP_REASONS.includes(value);
14
+ }
15
+ export const TURN_STOPPED_REASONS = [...TURN_STOP_REASONS, 'deadline'];
16
+ export function isTurnStoppedReason(value) {
17
+ return typeof value === 'string' && TURN_STOPPED_REASONS.includes(value);
18
+ }
19
+ /**
20
+ * How long the server keeps a stop: far longer than any turn runs, so a worker
21
+ * that was slow to start, or whose watch failed and retried, still hears it.
22
+ */
23
+ export const TURN_STOP_RECORD_TTL_MS = 30 * 60_000;
24
+ /**
25
+ * The line a stopped turn leaves in the conversation: what a later turn's
26
+ * model reads after the stopped message's text, and the whole text of a
27
+ * stopped message that has none (a model provider refuses an empty text
28
+ * block, so a stopped turn that produced nothing still says this).
29
+ */
30
+ export function turnStoppedNote(marker) {
31
+ switch (marker.reason) {
32
+ case 'superseded':
33
+ return '[This turn was stopped here because the person sent a new message. Calls marked "not run" did not run.]';
34
+ case 'deadline':
35
+ return '[This turn ran out of time and was stopped here. Calls marked "not run" did not run.]';
36
+ default:
37
+ return '[The person stopped this turn here. Calls marked "not run" did not run.]';
38
+ }
39
+ }
40
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/turns/types.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,2EAA2E;AAC3E,MAAM,CAAC,MAAM,eAAe,GAAG,iBAAiB,CAAC;AASjD,MAAM,CAAC,MAAM,iBAAiB,GAA8B,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;AAExF,MAAM,UAAU,gBAAgB,CAAC,KAAc;IAC7C,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAK,iBAAuC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC/F,CAAC;AAUD,MAAM,CAAC,MAAM,oBAAoB,GAAiC,CAAC,GAAG,iBAAiB,EAAE,UAAU,CAAC,CAAC;AAErG,MAAM,UAAU,mBAAmB,CAAC,KAAc;IAChD,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAK,oBAA0C,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAClG,CAAC;AAgCD;;;GAGG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,EAAE,GAAG,MAAM,CAAC;AAYnD;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,MAAyC;IACvE,QAAQ,MAAM,CAAC,MAAM,EAAE,CAAC;QACtB,KAAK,YAAY;YACf,OAAO,yGAAyG,CAAC;QACnH,KAAK,UAAU;YACb,OAAO,uFAAuF,CAAC;QACjG;YACE,OAAO,0EAA0E,CAAC;IACtF,CAAC;AACH,CAAC"}
@@ -13,6 +13,8 @@
13
13
  import type { AgentProtocolEvent } from '../protocol/index.js';
14
14
  import type { ViewAnnotationState } from './api-surface.js';
15
15
  import type { ApprovalContinuation, ApprovalGrant } from '../approvals/types.js';
16
+ import type { TurnStoppedMarker } from '../turns/types.js';
17
+ import type { AttachmentLimits, AttachmentRef } from '../attachments/types.js';
16
18
  /**
17
19
  * Context sent alongside each message. The SDK collects visible annotations
18
20
  * and current route automatically; platforms can add custom metadata.
@@ -131,6 +133,13 @@ export interface AgentStoredMessage {
131
133
  }> | null;
132
134
  toolCallId?: string | null;
133
135
  createdAt: string;
136
+ /**
137
+ * Set on the last assistant message of a turn that was stopped (ADR-0252).
138
+ * The panel labels the message; a later turn's history says so after its text.
139
+ */
140
+ stopped?: TurnStoppedMarker | null;
141
+ /** The files the person attached to this message (ADR-0252 §2.8), by reference. */
142
+ attachments?: AttachmentRef[] | null;
134
143
  }
135
144
  /** One stored conversation, with its most recent messages in chronological order. */
136
145
  export interface AgentStoredConversation {
@@ -170,7 +179,12 @@ export interface AgentClientConfig {
170
179
  conversationId: string;
171
180
  content: string;
172
181
  context?: AgentMessageContext;
173
- attachments?: File[];
182
+ /**
183
+ * The files attached to this message, already uploaded through
184
+ * `attachments.upload` (ADR-0252 §2.8): the platform sends their ids.
185
+ * No file's bytes go with a message.
186
+ */
187
+ attachments?: AttachmentRef[];
174
188
  /**
175
189
  * Set on the turn the approval card starts after the user's decision
176
190
  * (ADR-0228 §2.2.5): the token to redeem, or that they declined. The
@@ -184,6 +198,23 @@ export interface AgentClientConfig {
184
198
  socketRoom: string;
185
199
  roomToken?: string;
186
200
  }>;
201
+ /**
202
+ * Asks the platform's API to stop a turn (ADR-0252 §2.14). The Stop control
203
+ * asks over the socket first; this is used when the socket cannot be reached
204
+ * or the stop is not confirmed in time. The platform checks that the turn is
205
+ * the user's, and records the same stop the socket would have. Optional: a
206
+ * platform without it stops only over the socket.
207
+ */
208
+ stopTurn?: (params: {
209
+ turnId: string;
210
+ conversationId: string | null;
211
+ }) => Promise<void>;
212
+ /**
213
+ * The platform's file area (ADR-0252 §2.8, §3). With it, the person can
214
+ * attach files to a message: each is uploaded when it is attached, and the
215
+ * message carries references. Without it, nothing can be attached.
216
+ */
217
+ attachments?: AttachmentClientSeam;
187
218
  /**
188
219
  * Hands the user's approval to this tab's OUI runtime (`runtime.grantApproval`
189
220
  * in oui-spec), so the approved UI action runs when the worker dispatches it.
@@ -247,4 +278,27 @@ export interface AgentClientConfig {
247
278
  */
248
279
  onEvent?: (event: AgentProtocolEvent) => void;
249
280
  }
281
+ /**
282
+ * How a tab puts files in the platform's file area and takes them out
283
+ * (ADR-0252 §3). The SDK holds the composer's state; the platform owns the
284
+ * requests, the storage and every check.
285
+ */
286
+ export interface AttachmentClientSeam {
287
+ /** The platform's limits, so a file is refused before it is uploaded. Defaults to `DEFAULT_ATTACHMENT_LIMITS`. */
288
+ limits?: AttachmentLimits | (() => Promise<AttachmentLimits>);
289
+ /**
290
+ * Upload one file to the conversation's file area and resolve its reference
291
+ * once the platform has checked it and it can be used. Rejects with an
292
+ * `Error` whose message says why it was refused, which the composer shows.
293
+ */
294
+ upload(file: File, options: {
295
+ conversationId: string;
296
+ signal: AbortSignal;
297
+ onProgress?: (fraction: number) => void;
298
+ }): Promise<AttachmentRef>;
299
+ /** Remove a file from the conversation's file area. */
300
+ remove?(ref: AttachmentRef, options: {
301
+ conversationId: string;
302
+ }): Promise<void>;
303
+ }
250
304
  //# sourceMappingURL=client-config.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"client-config.d.ts","sourceRoot":"","sources":["../../src/types/client-config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client-config.d.ts","sourceRoot":"","sources":["../../src/types/client-config.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ouispec/agent-core",
3
- "version": "0.4.0",
3
+ "version": "0.8.0",
4
4
  "description": "Schema types, entity graph, intent resolution, and protocol definitions for the agent SDK",
5
5
  "homepage": "https://github.com/wesreid/oui/tree/main/packages/agent-core#readme",
6
6
  "bugs": {
@@ -30,9 +30,9 @@
30
30
  "dependencies": {
31
31
  "ajv": "^8.17.0",
32
32
  "yaml": "^2.7.0",
33
- "@ouispec/agent-events": "^0.2.2",
34
- "@ouispec/contract": "^0.2.0",
35
- "oui-spec": "^0.8.0"
33
+ "@ouispec/agent-events": "^0.8.0",
34
+ "@ouispec/contract": "^0.4.0",
35
+ "oui-spec": "^0.11.0"
36
36
  },
37
37
  "devDependencies": {
38
38
  "@types/node": "^22.0.0",