@localhostdevs/sdk 0.13.0 → 0.15.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.
@@ -0,0 +1,46 @@
1
+ import type { CollectOption, CollectStore, StoredCollect } from './collectStore.js';
2
+ import type { CommandContext } from './types.js';
3
+ /** Plurality outcome: a winning option (or null on no submissions) + full tally. */
4
+ export type PluralityResult = {
5
+ action: string | null;
6
+ noVotes?: boolean;
7
+ tally: Array<{
8
+ action: string;
9
+ label: string;
10
+ votes: number;
11
+ }>;
12
+ };
13
+ /** List outcome: the raw submitted values in submission order. */
14
+ export type ListResult = {
15
+ submissions: string[];
16
+ };
17
+ export type CollectResult = PluralityResult | ListResult;
18
+ /** Plurality; on a tie the earliest-declared option (lowest index) wins; zero
19
+ * total votes → { action: null, noVotes: true }. The tally lists every option
20
+ * in declaration order. */
21
+ export declare function resolveWinner(options: CollectOption[], counts: Record<string, number>): PluralityResult;
22
+ /** Resolve a collect into its result by aggregate shape: plurality → winner +
23
+ * tally; list → the raw submissions. */
24
+ export declare function aggregateResult(c: {
25
+ submission: 'option' | 'text';
26
+ aggregate: 'plurality' | 'list';
27
+ options: CollectOption[];
28
+ }, store: CollectStore, promptId: string): CollectResult;
29
+ export type CollectResultSink = (event: {
30
+ promptId: string;
31
+ result: CollectResult;
32
+ origin: Record<string, unknown>;
33
+ }) => Promise<void>;
34
+ /** Close one open collect: resolve → emit to the sink → mark closed.
35
+ * Emit-before-mark with at-least-once intent — if the sink throws the collect
36
+ * stays open and is retried (the sink/#2 dedups on promptId). Never rejects:
37
+ * a per-item failure is isolated so one bad collect can't stall the rest. */
38
+ export declare function closeOne(store: CollectStore, collect: StoredCollect, sink: CollectResultSink): Promise<void>;
39
+ /** One close-loop pass: resolve every due-by-time open collect and close it. */
40
+ export declare function closeDueByTime(store: CollectStore, now: number, sink: CollectResultSink): Promise<void>;
41
+ /** The internal `__collect_submit` action handler: upsert one submission per
42
+ * member. Ignores submissions for an unknown/closed collect or with no user.
43
+ * Validates per shape (option must be a declared action; text non-empty ≤280).
44
+ * After recording, closes the collect if a submission-count cap is reached. */
45
+ export declare function makeSubmitHandler(store: CollectStore, sink: CollectResultSink): (ctx: CommandContext) => Promise<void>;
46
+ //# sourceMappingURL=collect.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collect.d.ts","sourceRoot":"","sources":["../src/collect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACpF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD,oFAAoF;AACpF,MAAM,MAAM,eAAe,GAAG;IAC5B,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,EAAE,KAAK,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAChE,CAAC;AAEF,kEAAkE;AAClE,MAAM,MAAM,UAAU,GAAG;IACvB,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG,eAAe,GAAG,UAAU,CAAC;AAEzD;;4BAE4B;AAC5B,wBAAgB,aAAa,CAC3B,OAAO,EAAE,aAAa,EAAE,EACxB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC7B,eAAe,CAQjB;AAED;yCACyC;AACzC,wBAAgB,eAAe,CAC7B,CAAC,EAAE;IAAE,UAAU,EAAE,QAAQ,GAAG,MAAM,CAAC;IAAC,SAAS,EAAE,WAAW,GAAG,MAAM,CAAC;IAAC,OAAO,EAAE,aAAa,EAAE,CAAA;CAAE,EAC/F,KAAK,EAAE,YAAY,EACnB,QAAQ,EAAE,MAAM,GACf,aAAa,CAGf;AAED,MAAM,MAAM,iBAAiB,GAAG,CAAC,KAAK,EAAE;IACtC,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,aAAa,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACjC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;AAEpB;;;8EAG8E;AAC9E,wBAAsB,QAAQ,CAC5B,KAAK,EAAE,YAAY,EACnB,OAAO,EAAE,aAAa,EACtB,IAAI,EAAE,iBAAiB,GACtB,OAAO,CAAC,IAAI,CAAC,CAQf;AAED,gFAAgF;AAChF,wBAAsB,cAAc,CAClC,KAAK,EAAE,YAAY,EACnB,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,iBAAiB,GACtB,OAAO,CAAC,IAAI,CAAC,CAIf;AAED;;;gFAGgF;AAChF,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,YAAY,EACnB,IAAI,EAAE,iBAAiB,GACtB,CAAC,GAAG,EAAE,cAAc,KAAK,OAAO,CAAC,IAAI,CAAC,CAqBxC"}
@@ -0,0 +1,68 @@
1
+ /** Plurality; on a tie the earliest-declared option (lowest index) wins; zero
2
+ * total votes → { action: null, noVotes: true }. The tally lists every option
3
+ * in declaration order. */
4
+ export function resolveWinner(options, counts) {
5
+ const tally = options.map((o) => ({ action: o.action, label: o.label, votes: counts[o.action] ?? 0 }));
6
+ const total = tally.reduce((s, t) => s + t.votes, 0);
7
+ if (total === 0)
8
+ return { action: null, noVotes: true, tally };
9
+ // Iterate in declaration order so the first option to reach the max wins ties.
10
+ let best = tally[0];
11
+ for (const t of tally)
12
+ if (t.votes > best.votes)
13
+ best = t;
14
+ return { action: best.action, tally };
15
+ }
16
+ /** Resolve a collect into its result by aggregate shape: plurality → winner +
17
+ * tally; list → the raw submissions. */
18
+ export function aggregateResult(c, store, promptId) {
19
+ if (c.aggregate === 'plurality')
20
+ return resolveWinner(c.options, store.tally(promptId));
21
+ return { submissions: store.submissions(promptId) };
22
+ }
23
+ /** Close one open collect: resolve → emit to the sink → mark closed.
24
+ * Emit-before-mark with at-least-once intent — if the sink throws the collect
25
+ * stays open and is retried (the sink/#2 dedups on promptId). Never rejects:
26
+ * a per-item failure is isolated so one bad collect can't stall the rest. */
27
+ export async function closeOne(store, collect, sink) {
28
+ try {
29
+ const result = aggregateResult(collect, store, collect.promptId);
30
+ await sink({ promptId: collect.promptId, result, origin: collect.origin });
31
+ store.markClosed(collect.promptId);
32
+ }
33
+ catch {
34
+ // Leave it open; next pass retries.
35
+ }
36
+ }
37
+ /** One close-loop pass: resolve every due-by-time open collect and close it. */
38
+ export async function closeDueByTime(store, now, sink) {
39
+ for (const collect of store.dueByTime(now)) {
40
+ await closeOne(store, collect, sink);
41
+ }
42
+ }
43
+ /** The internal `__collect_submit` action handler: upsert one submission per
44
+ * member. Ignores submissions for an unknown/closed collect or with no user.
45
+ * Validates per shape (option must be a declared action; text non-empty ≤280).
46
+ * After recording, closes the collect if a submission-count cap is reached. */
47
+ export function makeSubmitHandler(store, sink) {
48
+ return async (ctx) => {
49
+ const promptId = typeof ctx.args.promptId === 'string' ? ctx.args.promptId : '';
50
+ const value = typeof ctx.args.value === 'string' ? ctx.args.value : '';
51
+ const memberId = ctx.user?.id;
52
+ const collect = promptId ? store.getCollect(promptId) : null;
53
+ if (collect && collect.status === 'open' && memberId) {
54
+ const valid = collect.submission === 'option'
55
+ ? collect.options.some((o) => o.action === value)
56
+ : value.length > 0 && value.length <= 280;
57
+ if (valid) {
58
+ store.recordSubmission(promptId, memberId, value);
59
+ if (collect.until != null && store.submissionCount(promptId) >= collect.until) {
60
+ await closeOne(store, collect, sink);
61
+ }
62
+ }
63
+ }
64
+ // Always ack so the dispatch completes (the visible update is #2's job).
65
+ await ctx.reply({ kind: 'text', text: 'submitted' });
66
+ };
67
+ }
68
+ //# sourceMappingURL=collect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collect.js","sourceRoot":"","sources":["../src/collect.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ export type CollectOption = {
2
+ label: string;
3
+ action: string;
4
+ };
5
+ export type StoredCollect = {
6
+ promptId: string;
7
+ submission: 'option' | 'text';
8
+ options: CollectOption[];
9
+ aggregate: 'plurality' | 'list';
10
+ closesAt: number | null;
11
+ until: number | null;
12
+ origin: Record<string, unknown>;
13
+ status: 'open' | 'closed';
14
+ };
15
+ /** Durable collect + submission storage over the built-in node:sqlite (synchronous). */
16
+ export declare class CollectStore {
17
+ private readonly db;
18
+ constructor(path: string);
19
+ openCollect(c: Omit<StoredCollect, 'status'>): void;
20
+ recordSubmission(promptId: string, memberId: string, value: string): void;
21
+ getCollect(promptId: string): StoredCollect | null;
22
+ /** option(action) → count, with every option present (0 for unsubmitted). */
23
+ tally(promptId: string): Record<string, number>;
24
+ /** All submitted values for the prompt, in submission order. */
25
+ submissions(promptId: string): string[];
26
+ submissionCount(promptId: string): number;
27
+ dueByTime(now: number): StoredCollect[];
28
+ markClosed(promptId: string): void;
29
+ close(): void;
30
+ }
31
+ //# sourceMappingURL=collectStore.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collectStore.d.ts","sourceRoot":"","sources":["../src/collectStore.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,aAAa,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAC9D,MAAM,MAAM,aAAa,GAAG;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,QAAQ,GAAG,MAAM,CAAC;IAC9B,OAAO,EAAE,aAAa,EAAE,CAAC;IACzB,SAAS,EAAE,WAAW,GAAG,MAAM,CAAC;IAChC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,MAAM,EAAE,MAAM,GAAG,QAAQ,CAAC;CAC3B,CAAC;AAsBF,wFAAwF;AACxF,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAe;gBAEtB,IAAI,EAAE,MAAM;IAKxB,WAAW,CAAC,CAAC,EAAE,IAAI,CAAC,aAAa,EAAE,QAAQ,CAAC,GAAG,IAAI;IAkBnD,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IASzE,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI;IAiBlD,6EAA6E;IAC7E,KAAK,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAW/C,gEAAgE;IAChE,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE;IAOvC,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;IAOzC,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,aAAa,EAAE;IASvC,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAIlC,KAAK,IAAI,IAAI;CAGd"}
@@ -0,0 +1,96 @@
1
+ import { DatabaseSync } from 'node:sqlite';
2
+ const DDL = `
3
+ CREATE TABLE IF NOT EXISTS collects (
4
+ prompt_id TEXT PRIMARY KEY,
5
+ submission TEXT NOT NULL,
6
+ options TEXT NOT NULL,
7
+ aggregate TEXT NOT NULL,
8
+ closes_at INTEGER,
9
+ until INTEGER,
10
+ origin TEXT NOT NULL,
11
+ status TEXT NOT NULL DEFAULT 'open'
12
+ );
13
+ CREATE TABLE IF NOT EXISTS submissions (
14
+ prompt_id TEXT NOT NULL,
15
+ member_id TEXT NOT NULL,
16
+ value TEXT NOT NULL,
17
+ PRIMARY KEY (prompt_id, member_id)
18
+ );
19
+ CREATE INDEX IF NOT EXISTS collects_open_due_idx ON collects (status, closes_at);
20
+ `;
21
+ /** Durable collect + submission storage over the built-in node:sqlite (synchronous). */
22
+ export class CollectStore {
23
+ db;
24
+ constructor(path) {
25
+ this.db = new DatabaseSync(path);
26
+ this.db.exec(DDL);
27
+ }
28
+ openCollect(c) {
29
+ this.db
30
+ .prepare(`INSERT INTO collects (prompt_id, submission, options, aggregate, closes_at, until, origin, status)
31
+ VALUES (?, ?, ?, ?, ?, ?, ?, 'open')
32
+ ON CONFLICT(prompt_id) DO NOTHING`)
33
+ .run(c.promptId, c.submission, JSON.stringify(c.options), c.aggregate, c.closesAt, c.until, JSON.stringify(c.origin));
34
+ }
35
+ recordSubmission(promptId, memberId, value) {
36
+ this.db
37
+ .prepare(`INSERT INTO submissions (prompt_id, member_id, value) VALUES (?, ?, ?)
38
+ ON CONFLICT(prompt_id, member_id) DO UPDATE SET value = excluded.value`)
39
+ .run(promptId, memberId, value);
40
+ }
41
+ getCollect(promptId) {
42
+ const row = this.db.prepare(`SELECT * FROM collects WHERE prompt_id = ?`).get(promptId);
43
+ if (!row)
44
+ return null;
45
+ return {
46
+ promptId: row.prompt_id,
47
+ submission: row.submission,
48
+ options: JSON.parse(row.options),
49
+ aggregate: row.aggregate,
50
+ closesAt: row.closes_at ?? null,
51
+ until: row.until ?? null,
52
+ origin: JSON.parse(row.origin),
53
+ status: row.status,
54
+ };
55
+ }
56
+ /** option(action) → count, with every option present (0 for unsubmitted). */
57
+ tally(promptId) {
58
+ const collect = this.getCollect(promptId);
59
+ const counts = {};
60
+ for (const o of collect?.options ?? [])
61
+ counts[o.action] = 0;
62
+ const rows = this.db
63
+ .prepare(`SELECT value, COUNT(*) AS n FROM submissions WHERE prompt_id = ? GROUP BY value`)
64
+ .all(promptId);
65
+ for (const r of rows)
66
+ if (r.value in counts)
67
+ counts[r.value] = r.n;
68
+ return counts;
69
+ }
70
+ /** All submitted values for the prompt, in submission order. */
71
+ submissions(promptId) {
72
+ const rows = this.db
73
+ .prepare(`SELECT value FROM submissions WHERE prompt_id = ? ORDER BY rowid`)
74
+ .all(promptId);
75
+ return rows.map((r) => r.value);
76
+ }
77
+ submissionCount(promptId) {
78
+ const row = this.db
79
+ .prepare(`SELECT COUNT(*) AS n FROM submissions WHERE prompt_id = ?`)
80
+ .get(promptId);
81
+ return row.n;
82
+ }
83
+ dueByTime(now) {
84
+ const rows = this.db
85
+ .prepare(`SELECT prompt_id FROM collects WHERE status = 'open' AND closes_at IS NOT NULL AND closes_at <= ?`)
86
+ .all(now);
87
+ return rows.map((r) => this.getCollect(r.prompt_id)).filter(Boolean);
88
+ }
89
+ markClosed(promptId) {
90
+ this.db.prepare(`UPDATE collects SET status = 'closed' WHERE prompt_id = ?`).run(promptId);
91
+ }
92
+ close() {
93
+ this.db.close();
94
+ }
95
+ }
96
+ //# sourceMappingURL=collectStore.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collectStore.js","sourceRoot":"","sources":["../src/collectStore.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,3 +1,4 @@
1
1
  export { Bot, SDK_PACKAGE_VERSION } from './bot.js';
2
- export type { BotOptions, BotResponse, CommandContext, CommandHandler, CommandEnvelope, LegacyReplyBody, ListItem, ListResponse, PollOption, PollResponse, PollResult, ReplyBody, ReplyEnvelope, HeartbeatEnvelope, TableCell, TableResponse, TextResponse, } from './types.js';
2
+ export { z } from 'zod';
3
+ export type { BotOptions, BotResponse, CommandContext, CommandHandler, CommandEnvelope, LegacyReplyBody, ListItem, ListResponse, CollectOption, CollectResponse, CollectResult, PluralityResult, ListResult, ReplyBody, ReplyEnvelope, HeartbeatEnvelope, TableCell, TableResponse, TextResponse, } from './types.js';
3
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AACpD,YAAY,EACV,UAAU,EACV,WAAW,EACX,cAAc,EACd,cAAc,EACd,eAAe,EACf,eAAe,EACf,QAAQ,EACR,YAAY,EACZ,UAAU,EACV,YAAY,EACZ,UAAU,EACV,SAAS,EACT,aAAa,EACb,iBAAiB,EACjB,SAAS,EACT,aAAa,EACb,YAAY,GACb,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AACpD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,YAAY,EACV,UAAU,EACV,WAAW,EACX,cAAc,EACd,cAAc,EACd,eAAe,EACf,eAAe,EACf,QAAQ,EACR,YAAY,EACZ,aAAa,EACb,eAAe,EACf,aAAa,EACb,eAAe,EACf,UAAU,EACV,SAAS,EACT,aAAa,EACb,iBAAiB,EACjB,SAAS,EACT,aAAa,EACb,YAAY,GACb,MAAM,YAAY,CAAC"}
package/dist/index.js CHANGED
@@ -1,2 +1,3 @@
1
1
  export { Bot, SDK_PACKAGE_VERSION } from './bot.js';
2
+ export { z } from 'zod';
2
3
  //# 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,OAAO,EAAE,GAAG,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AACpD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC"}
@@ -0,0 +1,5 @@
1
+ import { type ZodType } from 'zod';
2
+ /** Serialize a zod schema to a plain JSON Schema object for IDENTIFY + storage.
3
+ * Isolated here so the conversion library can be swapped without touching bot.ts. */
4
+ export declare function toJsonSchema(schema: ZodType): Record<string, unknown>;
5
+ //# sourceMappingURL=jsonSchema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jsonSchema.d.ts","sourceRoot":"","sources":["../src/jsonSchema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAK,KAAK,OAAO,EAAE,MAAM,KAAK,CAAC;AAEtC;sFACsF;AACtF,wBAAgB,YAAY,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAErE"}
@@ -0,0 +1,7 @@
1
+ import { z } from 'zod';
2
+ /** Serialize a zod schema to a plain JSON Schema object for IDENTIFY + storage.
3
+ * Isolated here so the conversion library can be swapped without touching bot.ts. */
4
+ export function toJsonSchema(schema) {
5
+ return z.toJSONSchema(schema);
6
+ }
7
+ //# sourceMappingURL=jsonSchema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jsonSchema.js","sourceRoot":"","sources":["../src/jsonSchema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAgB,MAAM,KAAK,CAAC;AAEtC;sFACsF;AACtF,MAAM,UAAU,YAAY,CAAC,MAAe;IAC1C,OAAO,CAAC,CAAC,YAAY,CAAC,MAAM,CAA4B,CAAC;AAC3D,CAAC"}
@@ -5,6 +5,7 @@ export declare const OP: {
5
5
  readonly HEARTBEAT: 2;
6
6
  readonly REPLY: 3;
7
7
  readonly UPDATE: 4;
8
+ readonly COLLECT_RESULT: 5;
8
9
  readonly ERROR: 9;
9
10
  readonly HELLO: 10;
10
11
  readonly HEARTBEAT_ACK: 11;
@@ -65,14 +66,19 @@ export type ReplyBodyShape = {
65
66
  charge?: boolean;
66
67
  }>;
67
68
  } | {
68
- kind: 'poll';
69
+ kind: 'collect';
69
70
  promptId: string;
70
- question: string;
71
- options: ReadonlyArray<{
71
+ prompt: {
72
+ text: string;
73
+ };
74
+ submission: 'option' | 'text';
75
+ options?: ReadonlyArray<{
72
76
  label: string;
73
77
  action: string;
74
78
  }>;
75
- closesAt: number;
79
+ aggregate: 'plurality' | 'list';
80
+ closesAt?: number;
81
+ until?: number;
76
82
  };
77
83
  export type Progress = number | {
78
84
  current: number;
@@ -102,6 +108,9 @@ export interface TransportOptions {
102
108
  name: string;
103
109
  streaming: boolean;
104
110
  mimeType?: string;
111
+ inputSchema?: Record<string, unknown>;
112
+ outputSchema?: Record<string, unknown>;
113
+ outputKind?: string;
105
114
  }>;
106
115
  /** How many commands this bot's machine can process at once, advertised in
107
116
  * IDENTIFY so the gateway can pace delivery and queue overflow. Omitted from
@@ -148,6 +157,8 @@ export declare class Transport {
148
157
  replayReply(msgId: string): void;
149
158
  sendCannotReplay(msgId: string): void;
150
159
  sendUpdate(msgId: string, progress: Progress | undefined, body: UpdateBodyShape): void;
160
+ /** Proactive (no msgId): the bot pushes a closed collect's result. */
161
+ sendCollectResult(promptId: string, result: unknown): void;
151
162
  private send;
152
163
  private startHeartbeat;
153
164
  close(): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../src/transport.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../src/transport.ts"],"names":[],"mappings":"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"}
package/dist/transport.js CHANGED
@@ -6,6 +6,7 @@ export const OP = {
6
6
  HEARTBEAT: 2,
7
7
  REPLY: 3,
8
8
  UPDATE: 4,
9
+ COLLECT_RESULT: 5,
9
10
  ERROR: 9,
10
11
  HELLO: 10,
11
12
  HEARTBEAT_ACK: 11,
@@ -149,6 +150,10 @@ export class Transport {
149
150
  sendUpdate(msgId, progress, body) {
150
151
  this.send({ op: OP.UPDATE, d: { msgId, progress, body } });
151
152
  }
153
+ /** Proactive (no msgId): the bot pushes a closed collect's result. */
154
+ sendCollectResult(promptId, result) {
155
+ this.send({ op: OP.COLLECT_RESULT, d: { promptId, result } });
156
+ }
152
157
  send(msg) {
153
158
  if (!this.ws || this.ws.readyState !== WebSocket.OPEN)
154
159
  return;
@@ -1 +1 @@
1
- {"version":3,"file":"transport.js","sourceRoot":"","sources":["../src/transport.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"transport.js","sourceRoot":"","sources":["../src/transport.ts"],"names":[],"mappings":"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"}