@parlor/chat 0.4.1 → 0.4.2

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/index.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  export { CHAT_EVENTS, type ChatEvent } from "./events.js";
2
2
  export type { Author, AuthorOf, ChatItemBody, ChatItemKind, HostItemDraft, HostItemKind, ItemSignature, LoggedItem, UserItemKind, } from "./items.js";
3
3
  export { type AppliedFrame, applyFrame } from "./open-turns.js";
4
- export { isPromptTooLong, MAX_PROMPT_CHARS, PROMPT_LIMIT_MESSAGE } from "./limits.js";
4
+ export { AGENT_OPTION_LIMITS, clipAgentOptions, isPromptTooLong, MAX_PROMPT_CHARS, PROMPT_LIMIT_MESSAGE, } from "./limits.js";
5
5
  export type { AgentInfo, AgentOption, AgentOptionValue, AgentRef, AgentUsage, AgentUsageWindow, AnswerToSign, ChatOwner, ChatSnapshot, ClaimedDevice, ClaimedTurn, HostSummary, OpenItem, OpenTurn, PromptToSign, ThreadHistory, ThreadList, ThreadPage, ThreadSummary, TurnFailure, TurnOutcome, TurnSignals, TurnState, TurnStatus, } from "./model.js";
6
6
  export { CHAT_CHANNEL, CHAT_PLUGIN, type ChatFrame, HOST_PROTOCOL, type HostFrame, type HostHello, type HostStreamBatch, type HostWelcome, parseChatFrame, PUSHED_TURNS_PROTOCOL, type PushedTurn, type ProtocolRange, type StreamingKind, } from "./protocol.js";
7
7
  export { CHAT_ACTIVITY_TAG, CHAT_AGENTS_CHECK_TAG, CHAT_TAG, HOSTS_TAG } from "./tags.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,KAAK,SAAS,EAAE,MAAM,aAAa,CAAC;AAC1D,YAAY,EACV,MAAM,EACN,QAAQ,EACR,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,aAAa,EACb,UAAU,EACV,YAAY,GACb,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,KAAK,YAAY,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAChE,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACtF,YAAY,EACV,SAAS,EACT,WAAW,EACX,gBAAgB,EAChB,QAAQ,EACR,UAAU,EACV,gBAAgB,EAChB,YAAY,EACZ,SAAS,EACT,YAAY,EACZ,aAAa,EACb,WAAW,EACX,WAAW,EACX,QAAQ,EACR,QAAQ,EACR,YAAY,EACZ,aAAa,EACb,UAAU,EACV,UAAU,EACV,aAAa,EACb,WAAW,EACX,WAAW,EACX,WAAW,EACX,SAAS,EACT,UAAU,GACX,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,YAAY,EACZ,WAAW,EACX,KAAK,SAAS,EACd,aAAa,EACb,KAAK,SAAS,EACd,KAAK,SAAS,EACd,KAAK,eAAe,EACpB,KAAK,WAAW,EAChB,cAAc,EACd,qBAAqB,EACrB,KAAK,UAAU,EACf,KAAK,aAAa,EAClB,KAAK,aAAa,GACnB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAC1F,OAAO,EACL,KAAK,QAAQ,EACb,KAAK,QAAQ,EACb,KAAK,UAAU,EACf,KAAK,SAAS,EACd,UAAU,EACV,KAAK,WAAW,EAChB,KAAK,kBAAkB,GACxB,MAAM,WAAW,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,KAAK,SAAS,EAAE,MAAM,aAAa,CAAC;AAC1D,YAAY,EACV,MAAM,EACN,QAAQ,EACR,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,aAAa,EACb,UAAU,EACV,YAAY,GACb,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,KAAK,YAAY,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAChE,OAAO,EACL,mBAAmB,EACnB,gBAAgB,EAChB,eAAe,EACf,gBAAgB,EAChB,oBAAoB,GACrB,MAAM,aAAa,CAAC;AACrB,YAAY,EACV,SAAS,EACT,WAAW,EACX,gBAAgB,EAChB,QAAQ,EACR,UAAU,EACV,gBAAgB,EAChB,YAAY,EACZ,SAAS,EACT,YAAY,EACZ,aAAa,EACb,WAAW,EACX,WAAW,EACX,QAAQ,EACR,QAAQ,EACR,YAAY,EACZ,aAAa,EACb,UAAU,EACV,UAAU,EACV,aAAa,EACb,WAAW,EACX,WAAW,EACX,WAAW,EACX,SAAS,EACT,UAAU,GACX,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,YAAY,EACZ,WAAW,EACX,KAAK,SAAS,EACd,aAAa,EACb,KAAK,SAAS,EACd,KAAK,SAAS,EACd,KAAK,eAAe,EACpB,KAAK,WAAW,EAChB,cAAc,EACd,qBAAqB,EACrB,KAAK,UAAU,EACf,KAAK,aAAa,EAClB,KAAK,aAAa,GACnB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAC1F,OAAO,EACL,KAAK,QAAQ,EACb,KAAK,QAAQ,EACb,KAAK,UAAU,EACf,KAAK,SAAS,EACd,UAAU,EACV,KAAK,WAAW,EAChB,KAAK,kBAAkB,GACxB,MAAM,WAAW,CAAC"}
package/dist/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  export { CHAT_EVENTS } from "./events.js";
2
2
  export { applyFrame } from "./open-turns.js";
3
- export { isPromptTooLong, MAX_PROMPT_CHARS, PROMPT_LIMIT_MESSAGE } from "./limits.js";
3
+ export { AGENT_OPTION_LIMITS, clipAgentOptions, isPromptTooLong, MAX_PROMPT_CHARS, PROMPT_LIMIT_MESSAGE, } from "./limits.js";
4
4
  export { CHAT_CHANNEL, CHAT_PLUGIN, HOST_PROTOCOL, parseChatFrame, PUSHED_TURNS_PROTOCOL, } from "./protocol.js";
5
5
  export { CHAT_ACTIVITY_TAG, CHAT_AGENTS_CHECK_TAG, CHAT_TAG, HOSTS_TAG } from "./tags.js";
6
6
  export { foldThread, } from "./view.js";
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAkB,MAAM,aAAa,CAAC;AAY1D,OAAO,EAAqB,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAChE,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AA2BtF,OAAO,EACL,YAAY,EACZ,WAAW,EAEX,aAAa,EAKb,cAAc,EACd,qBAAqB,GAItB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAC1F,OAAO,EAKL,UAAU,GAGX,MAAM,WAAW,CAAC","sourcesContent":["export { CHAT_EVENTS, type ChatEvent } from \"./events.js\";\nexport type {\n Author,\n AuthorOf,\n ChatItemBody,\n ChatItemKind,\n HostItemDraft,\n HostItemKind,\n ItemSignature,\n LoggedItem,\n UserItemKind,\n} from \"./items.js\";\nexport { type AppliedFrame, applyFrame } from \"./open-turns.js\";\nexport { isPromptTooLong, MAX_PROMPT_CHARS, PROMPT_LIMIT_MESSAGE } from \"./limits.js\";\nexport type {\n AgentInfo,\n AgentOption,\n AgentOptionValue,\n AgentRef,\n AgentUsage,\n AgentUsageWindow,\n AnswerToSign,\n ChatOwner,\n ChatSnapshot,\n ClaimedDevice,\n ClaimedTurn,\n HostSummary,\n OpenItem,\n OpenTurn,\n PromptToSign,\n ThreadHistory,\n ThreadList,\n ThreadPage,\n ThreadSummary,\n TurnFailure,\n TurnOutcome,\n TurnSignals,\n TurnState,\n TurnStatus,\n} from \"./model.js\";\nexport {\n CHAT_CHANNEL,\n CHAT_PLUGIN,\n type ChatFrame,\n HOST_PROTOCOL,\n type HostFrame,\n type HostHello,\n type HostStreamBatch,\n type HostWelcome,\n parseChatFrame,\n PUSHED_TURNS_PROTOCOL,\n type PushedTurn,\n type ProtocolRange,\n type StreamingKind,\n} from \"./protocol.js\";\nexport { CHAT_ACTIVITY_TAG, CHAT_AGENTS_CHECK_TAG, CHAT_TAG, HOSTS_TAG } from \"./tags.js\";\nexport {\n type AskState,\n type ChatItem,\n type FoldedKind,\n type FoldInput,\n foldThread,\n type ItemFolders,\n type ThreadConfirmation,\n} from \"./view.js\";\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAkB,MAAM,aAAa,CAAC;AAY1D,OAAO,EAAqB,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAChE,OAAO,EACL,mBAAmB,EACnB,gBAAgB,EAChB,eAAe,EACf,gBAAgB,EAChB,oBAAoB,GACrB,MAAM,aAAa,CAAC;AA2BrB,OAAO,EACL,YAAY,EACZ,WAAW,EAEX,aAAa,EAKb,cAAc,EACd,qBAAqB,GAItB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAC1F,OAAO,EAKL,UAAU,GAGX,MAAM,WAAW,CAAC","sourcesContent":["export { CHAT_EVENTS, type ChatEvent } from \"./events.js\";\nexport type {\n Author,\n AuthorOf,\n ChatItemBody,\n ChatItemKind,\n HostItemDraft,\n HostItemKind,\n ItemSignature,\n LoggedItem,\n UserItemKind,\n} from \"./items.js\";\nexport { type AppliedFrame, applyFrame } from \"./open-turns.js\";\nexport {\n AGENT_OPTION_LIMITS,\n clipAgentOptions,\n isPromptTooLong,\n MAX_PROMPT_CHARS,\n PROMPT_LIMIT_MESSAGE,\n} from \"./limits.js\";\nexport type {\n AgentInfo,\n AgentOption,\n AgentOptionValue,\n AgentRef,\n AgentUsage,\n AgentUsageWindow,\n AnswerToSign,\n ChatOwner,\n ChatSnapshot,\n ClaimedDevice,\n ClaimedTurn,\n HostSummary,\n OpenItem,\n OpenTurn,\n PromptToSign,\n ThreadHistory,\n ThreadList,\n ThreadPage,\n ThreadSummary,\n TurnFailure,\n TurnOutcome,\n TurnSignals,\n TurnState,\n TurnStatus,\n} from \"./model.js\";\nexport {\n CHAT_CHANNEL,\n CHAT_PLUGIN,\n type ChatFrame,\n HOST_PROTOCOL,\n type HostFrame,\n type HostHello,\n type HostStreamBatch,\n type HostWelcome,\n parseChatFrame,\n PUSHED_TURNS_PROTOCOL,\n type PushedTurn,\n type ProtocolRange,\n type StreamingKind,\n} from \"./protocol.js\";\nexport { CHAT_ACTIVITY_TAG, CHAT_AGENTS_CHECK_TAG, CHAT_TAG, HOSTS_TAG } from \"./tags.js\";\nexport {\n type AskState,\n type ChatItem,\n type FoldedKind,\n type FoldInput,\n foldThread,\n type ItemFolders,\n type ThreadConfirmation,\n} from \"./view.js\";\n"]}
package/dist/limits.d.ts CHANGED
@@ -1,4 +1,21 @@
1
+ import type { AgentOption } from "./model.js";
1
2
  export declare const MAX_PROMPT_CHARS = 32000;
2
3
  export declare const PROMPT_LIMIT_MESSAGE: string;
3
4
  export declare const isPromptTooLong: (text: string) => boolean;
5
+ /** What a computer may report of one agent's options; longer display text is cut, never refused. */
6
+ export declare const AGENT_OPTION_LIMITS: {
7
+ readonly options: 10;
8
+ readonly values: 50;
9
+ readonly id: 200;
10
+ readonly optionName: 100;
11
+ readonly category: 50;
12
+ readonly valueName: 200;
13
+ readonly description: 500;
14
+ };
15
+ /**
16
+ * An agent's options within `AGENT_OPTION_LIMITS`: names and descriptions cut to length, the
17
+ * first values kept with the current one among them, and an option or value whose id is too
18
+ * long to send back dropped, as choosing it could not work.
19
+ */
20
+ export declare function clipAgentOptions(options: readonly AgentOption[]): AgentOption[];
4
21
  //# sourceMappingURL=limits.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"limits.d.ts","sourceRoot":"","sources":["../src/limits.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,gBAAgB,QAAS,CAAC;AAEvC,eAAO,MAAM,oBAAoB,QAAoF,CAAC;AAEtH,eAAO,MAAM,eAAe,SAAU,MAAM,KAAG,OACR,CAAC"}
1
+ {"version":3,"file":"limits.d.ts","sourceRoot":"","sources":["../src/limits.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAoB,MAAM,YAAY,CAAC;AAEhE,eAAO,MAAM,gBAAgB,QAAS,CAAC;AAEvC,eAAO,MAAM,oBAAoB,QAAoF,CAAC;AAEtH,eAAO,MAAM,eAAe,SAAU,MAAM,KAAG,OACR,CAAC;AAExC,oGAAoG;AACpG,eAAO,MAAM,mBAAmB;aAC9B,OAAO,EAAE,EAAE;aACX,MAAM,EAAE,EAAE;aACV,EAAE,EAAE,GAAG;aACP,UAAU,EAAE,GAAG;aACf,QAAQ,EAAE,EAAE;aACZ,SAAS,EAAE,GAAG;aACd,WAAW,EAAE,GAAG;CACR,CAAC;AAKX;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,SAAS,WAAW,EAAE,GAAG,WAAW,EAAE,CA+B/E"}
package/dist/limits.js CHANGED
@@ -1,4 +1,49 @@
1
1
  export const MAX_PROMPT_CHARS = 32_000;
2
2
  export const PROMPT_LIMIT_MESSAGE = `Messages can be at most ${MAX_PROMPT_CHARS.toLocaleString("en-US")} characters.`;
3
3
  export const isPromptTooLong = (text) => text.trim().length > MAX_PROMPT_CHARS;
4
+ /** What a computer may report of one agent's options; longer display text is cut, never refused. */
5
+ export const AGENT_OPTION_LIMITS = {
6
+ options: 10,
7
+ values: 50,
8
+ id: 200,
9
+ optionName: 100,
10
+ category: 50,
11
+ valueName: 200,
12
+ description: 500,
13
+ };
14
+ const clip = (text, max) => text.length > max ? `${text.slice(0, max - 1)}…` : text;
15
+ /**
16
+ * An agent's options within `AGENT_OPTION_LIMITS`: names and descriptions cut to length, the
17
+ * first values kept with the current one among them, and an option or value whose id is too
18
+ * long to send back dropped, as choosing it could not work.
19
+ */
20
+ export function clipAgentOptions(options) {
21
+ const limits = AGENT_OPTION_LIMITS;
22
+ return options
23
+ .filter((option) => option.id.length <= limits.id && option.current.length <= limits.id)
24
+ .slice(0, limits.options)
25
+ .map((option) => {
26
+ const fitting = option.values.filter((value) => value.id.length <= limits.id);
27
+ const current = fitting.find((value) => value.id === option.current);
28
+ const first = fitting.slice(0, limits.values);
29
+ const kept = current && !first.includes(current)
30
+ ? [...first.slice(0, limits.values - 1), current]
31
+ : first;
32
+ return {
33
+ id: option.id,
34
+ name: clip(option.name, limits.optionName),
35
+ ...(option.category === undefined
36
+ ? {}
37
+ : { category: clip(option.category, limits.category) }),
38
+ current: option.current,
39
+ values: kept.map((value) => ({
40
+ id: value.id,
41
+ name: clip(value.name, limits.valueName),
42
+ ...(value.description === undefined
43
+ ? {}
44
+ : { description: clip(value.description, limits.description) }),
45
+ })),
46
+ };
47
+ });
48
+ }
4
49
  //# sourceMappingURL=limits.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"limits.js","sourceRoot":"","sources":["../src/limits.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,gBAAgB,GAAG,MAAM,CAAC;AAEvC,MAAM,CAAC,MAAM,oBAAoB,GAAG,2BAA2B,gBAAgB,CAAC,cAAc,CAAC,OAAO,CAAC,cAAc,CAAC;AAEtH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,IAAY,EAAW,EAAE,CACvD,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,gBAAgB,CAAC","sourcesContent":["export const MAX_PROMPT_CHARS = 32_000;\n\nexport const PROMPT_LIMIT_MESSAGE = `Messages can be at most ${MAX_PROMPT_CHARS.toLocaleString(\"en-US\")} characters.`;\n\nexport const isPromptTooLong = (text: string): boolean =>\n text.trim().length > MAX_PROMPT_CHARS;\n"]}
1
+ {"version":3,"file":"limits.js","sourceRoot":"","sources":["../src/limits.ts"],"names":[],"mappings":"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","sourcesContent":["import type { AgentOption, AgentOptionValue } from \"./model.js\";\n\nexport const MAX_PROMPT_CHARS = 32_000;\n\nexport const PROMPT_LIMIT_MESSAGE = `Messages can be at most ${MAX_PROMPT_CHARS.toLocaleString(\"en-US\")} characters.`;\n\nexport const isPromptTooLong = (text: string): boolean =>\n text.trim().length > MAX_PROMPT_CHARS;\n\n/** What a computer may report of one agent's options; longer display text is cut, never refused. */\nexport const AGENT_OPTION_LIMITS = {\n options: 10,\n values: 50,\n id: 200,\n optionName: 100,\n category: 50,\n valueName: 200,\n description: 500,\n} as const;\n\nconst clip = (text: string, max: number) =>\n text.length > max ? `${text.slice(0, max - 1)}…` : text;\n\n/**\n * An agent's options within `AGENT_OPTION_LIMITS`: names and descriptions cut to length, the\n * first values kept with the current one among them, and an option or value whose id is too\n * long to send back dropped, as choosing it could not work.\n */\nexport function clipAgentOptions(options: readonly AgentOption[]): AgentOption[] {\n const limits = AGENT_OPTION_LIMITS;\n return options\n .filter(\n (option) => option.id.length <= limits.id && option.current.length <= limits.id,\n )\n .slice(0, limits.options)\n .map((option) => {\n const fitting = option.values.filter((value) => value.id.length <= limits.id);\n const current = fitting.find((value) => value.id === option.current);\n const first = fitting.slice(0, limits.values);\n const kept =\n current && !first.includes(current)\n ? [...first.slice(0, limits.values - 1), current]\n : first;\n return {\n id: option.id,\n name: clip(option.name, limits.optionName),\n ...(option.category === undefined\n ? {}\n : { category: clip(option.category, limits.category) }),\n current: option.current,\n values: kept.map((value): AgentOptionValue => ({\n id: value.id,\n name: clip(value.name, limits.valueName),\n ...(value.description === undefined\n ? {}\n : { description: clip(value.description, limits.description) }),\n })),\n };\n });\n}\n"]}
@@ -181,7 +181,7 @@ export declare function hostChatActions(deps: ChatActionDeps, session?: HostSess
181
181
  version: z.ZodOptional<z.ZodString>;
182
182
  ready: z.ZodBoolean;
183
183
  problem: z.ZodOptional<z.ZodString>;
184
- options: z.ZodOptional<z.ZodReadonly<z.ZodArray<z.ZodObject<{
184
+ options: z.ZodOptional<z.ZodReadonly<z.ZodPipe<z.ZodArray<z.ZodObject<{
185
185
  id: z.ZodString;
186
186
  name: z.ZodString;
187
187
  category: z.ZodOptional<z.ZodString>;
@@ -191,7 +191,17 @@ export declare function hostChatActions(deps: ChatActionDeps, session?: HostSess
191
191
  name: z.ZodString;
192
192
  description: z.ZodOptional<z.ZodString>;
193
193
  }, z.core.$strip>>>;
194
- }, z.core.$strip>>>>;
194
+ }, z.core.$strip>>, z.ZodTransform<import("../model.js").AgentOption[], {
195
+ id: string;
196
+ name: string;
197
+ category?: string | undefined;
198
+ current: string;
199
+ values: readonly {
200
+ id: string;
201
+ name: string;
202
+ description?: string | undefined;
203
+ }[];
204
+ }[]>>>>;
195
205
  usage: z.ZodOptional<z.ZodObject<{
196
206
  windows: z.ZodReadonly<z.ZodArray<z.ZodObject<{
197
207
  id: z.ZodString;
@@ -216,7 +226,7 @@ export declare function hostChatActions(deps: ChatActionDeps, session?: HostSess
216
226
  version: z.ZodOptional<z.ZodString>;
217
227
  ready: z.ZodBoolean;
218
228
  problem: z.ZodOptional<z.ZodString>;
219
- options: z.ZodOptional<z.ZodReadonly<z.ZodArray<z.ZodObject<{
229
+ options: z.ZodOptional<z.ZodReadonly<z.ZodPipe<z.ZodArray<z.ZodObject<{
220
230
  id: z.ZodString;
221
231
  name: z.ZodString;
222
232
  category: z.ZodOptional<z.ZodString>;
@@ -226,7 +236,17 @@ export declare function hostChatActions(deps: ChatActionDeps, session?: HostSess
226
236
  name: z.ZodString;
227
237
  description: z.ZodOptional<z.ZodString>;
228
238
  }, z.core.$strip>>>;
229
- }, z.core.$strip>>>>;
239
+ }, z.core.$strip>>, z.ZodTransform<import("../model.js").AgentOption[], {
240
+ id: string;
241
+ name: string;
242
+ category?: string | undefined;
243
+ current: string;
244
+ values: readonly {
245
+ id: string;
246
+ name: string;
247
+ description?: string | undefined;
248
+ }[];
249
+ }[]>>>>;
230
250
  usage: z.ZodOptional<z.ZodObject<{
231
251
  windows: z.ZodReadonly<z.ZodArray<z.ZodObject<{
232
252
  id: z.ZodString;
@@ -491,7 +511,7 @@ export declare function chatActions(deps: ChatActionDeps, session?: HostSession)
491
511
  version: z.ZodOptional<z.ZodString>;
492
512
  ready: z.ZodBoolean;
493
513
  problem: z.ZodOptional<z.ZodString>;
494
- options: z.ZodOptional<z.ZodReadonly<z.ZodArray<z.ZodObject<{
514
+ options: z.ZodOptional<z.ZodReadonly<z.ZodPipe<z.ZodArray<z.ZodObject<{
495
515
  id: z.ZodString;
496
516
  name: z.ZodString;
497
517
  category: z.ZodOptional<z.ZodString>;
@@ -501,7 +521,17 @@ export declare function chatActions(deps: ChatActionDeps, session?: HostSession)
501
521
  name: z.ZodString;
502
522
  description: z.ZodOptional<z.ZodString>;
503
523
  }, z.core.$strip>>>;
504
- }, z.core.$strip>>>>;
524
+ }, z.core.$strip>>, z.ZodTransform<import("../model.js").AgentOption[], {
525
+ id: string;
526
+ name: string;
527
+ category?: string | undefined;
528
+ current: string;
529
+ values: readonly {
530
+ id: string;
531
+ name: string;
532
+ description?: string | undefined;
533
+ }[];
534
+ }[]>>>>;
505
535
  usage: z.ZodOptional<z.ZodObject<{
506
536
  windows: z.ZodReadonly<z.ZodArray<z.ZodObject<{
507
537
  id: z.ZodString;
@@ -526,7 +556,7 @@ export declare function chatActions(deps: ChatActionDeps, session?: HostSession)
526
556
  version: z.ZodOptional<z.ZodString>;
527
557
  ready: z.ZodBoolean;
528
558
  problem: z.ZodOptional<z.ZodString>;
529
- options: z.ZodOptional<z.ZodReadonly<z.ZodArray<z.ZodObject<{
559
+ options: z.ZodOptional<z.ZodReadonly<z.ZodPipe<z.ZodArray<z.ZodObject<{
530
560
  id: z.ZodString;
531
561
  name: z.ZodString;
532
562
  category: z.ZodOptional<z.ZodString>;
@@ -536,7 +566,17 @@ export declare function chatActions(deps: ChatActionDeps, session?: HostSession)
536
566
  name: z.ZodString;
537
567
  description: z.ZodOptional<z.ZodString>;
538
568
  }, z.core.$strip>>>;
539
- }, z.core.$strip>>>>;
569
+ }, z.core.$strip>>, z.ZodTransform<import("../model.js").AgentOption[], {
570
+ id: string;
571
+ name: string;
572
+ category?: string | undefined;
573
+ current: string;
574
+ values: readonly {
575
+ id: string;
576
+ name: string;
577
+ description?: string | undefined;
578
+ }[];
579
+ }[]>>>>;
540
580
  usage: z.ZodOptional<z.ZodObject<{
541
581
  windows: z.ZodReadonly<z.ZodArray<z.ZodObject<{
542
582
  id: z.ZodString;
@@ -1 +1 @@
1
- {"version":3,"file":"actions.d.ts","sourceRoot":"","sources":["../../src/server/actions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"actions.d.ts","sourceRoot":"","sources":["../../src/server/actions.ts"],"names":[],"mappings":"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"}
@@ -7,7 +7,7 @@ export declare const agentInfoSchema: z.ZodObject<{
7
7
  version: z.ZodOptional<z.ZodString>;
8
8
  ready: z.ZodBoolean;
9
9
  problem: z.ZodOptional<z.ZodString>;
10
- options: z.ZodOptional<z.ZodReadonly<z.ZodArray<z.ZodObject<{
10
+ options: z.ZodOptional<z.ZodReadonly<z.ZodPipe<z.ZodArray<z.ZodObject<{
11
11
  id: z.ZodString;
12
12
  name: z.ZodString;
13
13
  category: z.ZodOptional<z.ZodString>;
@@ -17,7 +17,17 @@ export declare const agentInfoSchema: z.ZodObject<{
17
17
  name: z.ZodString;
18
18
  description: z.ZodOptional<z.ZodString>;
19
19
  }, z.core.$strip>>>;
20
- }, z.core.$strip>>>>;
20
+ }, z.core.$strip>>, z.ZodTransform<import("../model.js").AgentOption[], {
21
+ id: string;
22
+ name: string;
23
+ category?: string | undefined;
24
+ current: string;
25
+ values: readonly {
26
+ id: string;
27
+ name: string;
28
+ description?: string | undefined;
29
+ }[];
30
+ }[]>>>>;
21
31
  usage: z.ZodOptional<z.ZodObject<{
22
32
  windows: z.ZodReadonly<z.ZodArray<z.ZodObject<{
23
33
  id: z.ZodString;
@@ -1 +1 @@
1
- {"version":3,"file":"rows.d.ts","sourceRoot":"","sources":["../../src/server/rows.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAkB,KAAK,UAAU,EAAE,MAAM,aAAa,CAAC;AAC9D,OAAO,KAAK,EAAY,aAAa,EAA0B,MAAM,aAAa,CAAC;AAkCnF,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAY1B,CAAC;AAgBH,eAAO,MAAM,OAAO;;;;;;;;;;;;;;;;;;iBAQlB,CAAC;AAEH,wBAAgB,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,OAAO,CAAC,GAAG,UAAU,CAyEtE;AAED,eAAO,MAAM,SAAS;;;;;;;iBAOpB,CAAC;AAEH,wBAAgB,eAAe,CAAC,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,SAAS,CAAC,GAAG,aAAa,CAY9E;AAED,eAAO,MAAM,aAAa,uHAOiB,CAAC;AAE5C,eAAO,MAAM,WAAW,YAAI,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,CAAU,CAAC;AACzF,eAAO,MAAM,eAAe;;;;;;EAAqD,CAAC"}
1
+ {"version":3,"file":"rows.d.ts","sourceRoot":"","sources":["../../src/server/rows.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAkB,KAAK,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9D,OAAO,KAAK,EAAY,aAAa,EAA0B,MAAM,aAAa,CAAC;AAqCnF,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAiB1B,CAAC;AAgBH,eAAO,MAAM,OAAO;;;;;;;;;;;;;;;;;;iBAQlB,CAAC;AAEH,wBAAgB,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,OAAO,CAAC,GAAG,UAAU,CAyEtE;AAED,eAAO,MAAM,SAAS;;;;;;;iBAOpB,CAAC;AAEH,wBAAgB,eAAe,CAAC,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,SAAS,CAAC,GAAG,aAAa,CAY9E;AAED,eAAO,MAAM,aAAa,uHAOiB,CAAC;AAE5C,eAAO,MAAM,WAAW,YAAI,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,CAAU,CAAC;AACzF,eAAO,MAAM,eAAe;;;;;;EAAqD,CAAC"}
@@ -1,18 +1,21 @@
1
1
  import { z } from "zod";
2
2
  import { idSchema } from "../id-schemas.js";
3
3
  import { chatItemBodies } from "../items.js";
4
+ import { clipAgentOptions } from "../limits.js";
5
+ const MAX_REPORTED_TEXT = 20_000;
6
+ const MAX_REPORTED_VALUES = 1_000;
4
7
  const agentOptionSchema = z.object({
5
- id: z.string().min(1).max(100),
6
- name: z.string().max(100),
7
- category: z.string().max(50).optional(),
8
- current: z.string().max(200),
8
+ id: z.string().min(1).max(MAX_REPORTED_TEXT),
9
+ name: z.string().max(MAX_REPORTED_TEXT),
10
+ category: z.string().max(MAX_REPORTED_TEXT).optional(),
11
+ current: z.string().max(MAX_REPORTED_TEXT),
9
12
  values: z
10
13
  .array(z.object({
11
- id: z.string().min(1).max(200),
12
- name: z.string().max(200),
13
- description: z.string().max(500).optional(),
14
+ id: z.string().min(1).max(MAX_REPORTED_TEXT),
15
+ name: z.string().max(MAX_REPORTED_TEXT),
16
+ description: z.string().max(MAX_REPORTED_TEXT).optional(),
14
17
  }))
15
- .max(50)
18
+ .max(MAX_REPORTED_VALUES)
16
19
  .readonly(),
17
20
  });
18
21
  const agentUsageSchema = z.object({
@@ -33,7 +36,12 @@ export const agentInfoSchema = z.object({
33
36
  version: z.string().optional(),
34
37
  ready: z.boolean(),
35
38
  problem: z.string().optional(),
36
- options: z.array(agentOptionSchema).max(10).readonly().optional(),
39
+ options: z
40
+ .array(agentOptionSchema)
41
+ .max(MAX_REPORTED_VALUES)
42
+ .transform(clipAgentOptions)
43
+ .readonly()
44
+ .optional(),
37
45
  usage: agentUsageSchema.optional(),
38
46
  outsideName: z
39
47
  .string()
@@ -1 +1 @@
1
- {"version":3,"file":"rows.js","sourceRoot":"","sources":["../../src/server/rows.ts"],"names":[],"mappings":"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","sourcesContent":["import { z } from \"zod\";\n\nimport { idSchema } from \"../id-schemas.js\";\nimport { chatItemBodies, type LoggedItem } from \"../items.js\";\nimport type { AgentRef, ThreadSummary, TurnFailure, TurnState } from \"../model.js\";\n\nconst agentOptionSchema = z.object({\n id: z.string().min(1).max(100),\n name: z.string().max(100),\n category: z.string().max(50).optional(),\n current: z.string().max(200),\n values: z\n .array(\n z.object({\n id: z.string().min(1).max(200),\n name: z.string().max(200),\n description: z.string().max(500).optional(),\n }),\n )\n .max(50)\n .readonly(),\n});\n\nconst agentUsageSchema = z.object({\n windows: z\n .array(\n z.object({\n id: z.string().min(1).max(50),\n minutes: z.number().positive(),\n used: z.number().min(0).max(1),\n resetsAt: z.number().optional(),\n }),\n )\n .max(10)\n .readonly(),\n at: z.number(),\n});\n\nexport const agentInfoSchema = z.object({\n id: z.string().min(1),\n name: z.string(),\n version: z.string().optional(),\n ready: z.boolean(),\n problem: z.string().optional(),\n options: z.array(agentOptionSchema).max(10).readonly().optional(),\n usage: agentUsageSchema.optional(),\n outsideName: z\n .string()\n .regex(/^[a-z0-9][a-z0-9_-]{0,79}$/)\n .optional(),\n});\n\nconst ITEM_KINDS = [\n \"prompt\",\n \"answer\",\n \"cancel\",\n \"reply\",\n \"reasoning\",\n \"tool\",\n \"plan\",\n \"ask\",\n \"event\",\n] as const;\n\nconst count = z.coerce.number();\n\nexport const itemRow = z.object({\n id: idSchema(\"item\"),\n thread_id: idSchema(\"thread\"),\n turn_id: idSchema(\"turn\"),\n seq: count,\n at: count,\n kind: z.enum(ITEM_KINDS),\n body: z.unknown(),\n});\n\nexport function toLoggedItem(row: z.output<typeof itemRow>): LoggedItem {\n const common = {\n id: row.id,\n threadId: row.thread_id,\n turnId: row.turn_id,\n seq: row.seq,\n at: row.at,\n };\n switch (row.kind) {\n case \"prompt\":\n return {\n ...common,\n author: \"user\",\n kind: \"prompt\",\n body: chatItemBodies.prompt.body.parse(row.body),\n };\n case \"answer\":\n return {\n ...common,\n author: \"user\",\n kind: \"answer\",\n body: chatItemBodies.answer.body.parse(row.body),\n };\n case \"cancel\":\n return {\n ...common,\n author: \"user\",\n kind: \"cancel\",\n body: chatItemBodies.cancel.body.parse(row.body),\n };\n case \"reply\":\n return {\n ...common,\n author: \"agent\",\n kind: \"reply\",\n body: chatItemBodies.reply.body.parse(row.body),\n };\n case \"reasoning\":\n return {\n ...common,\n author: \"agent\",\n kind: \"reasoning\",\n body: chatItemBodies.reasoning.body.parse(row.body),\n };\n case \"tool\":\n return {\n ...common,\n author: \"agent\",\n kind: \"tool\",\n body: chatItemBodies.tool.body.parse(row.body),\n };\n case \"plan\":\n return {\n ...common,\n author: \"agent\",\n kind: \"plan\",\n body: chatItemBodies.plan.body.parse(row.body),\n };\n case \"ask\":\n return {\n ...common,\n author: \"agent\",\n kind: \"ask\",\n body: chatItemBodies.ask.body.parse(row.body),\n };\n case \"event\":\n return {\n ...common,\n author: \"system\",\n kind: \"event\",\n body: chatItemBodies.event.body.parse(row.body),\n };\n }\n}\n\nexport const threadRow = z.object({\n id: idSchema(\"thread\"),\n title: z.string(),\n host_id: idSchema(\"host\").nullable(),\n agent_id: z.string().nullable(),\n last_seq: count,\n updated_at: count,\n});\n\nexport function toThreadSummary(row: z.output<typeof threadRow>): ThreadSummary {\n const agent: AgentRef | undefined =\n row.host_id !== null && row.agent_id !== null\n ? { hostId: row.host_id, agentId: row.agent_id }\n : undefined;\n return {\n id: row.id,\n title: row.title,\n agent,\n updatedAt: row.updated_at,\n lastSeq: row.last_seq,\n };\n}\n\nexport const TURN_FAILURES = [\n \"agent_exited\",\n \"agent_unavailable\",\n \"device_rejected\",\n \"signature_invalid\",\n \"prompt_expired\",\n \"host_lost\",\n] as const satisfies readonly TurnFailure[];\n\nexport const TURN_STATES = [\"queued\", \"running\", \"done\", \"failed\", \"cancelled\"] as const;\nexport const turnStateSchema = z.enum(TURN_STATES) satisfies z.ZodType<TurnState>;\n"]}
1
+ {"version":3,"file":"rows.js","sourceRoot":"","sources":["../../src/server/rows.ts"],"names":[],"mappings":"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","sourcesContent":["import { z } from \"zod\";\n\nimport { idSchema } from \"../id-schemas.js\";\nimport { chatItemBodies, type LoggedItem } from \"../items.js\";\nimport { clipAgentOptions } from \"../limits.js\";\nimport type { AgentRef, ThreadSummary, TurnFailure, TurnState } from \"../model.js\";\n\nconst MAX_REPORTED_TEXT = 20_000;\nconst MAX_REPORTED_VALUES = 1_000;\n\nconst agentOptionSchema = z.object({\n id: z.string().min(1).max(MAX_REPORTED_TEXT),\n name: z.string().max(MAX_REPORTED_TEXT),\n category: z.string().max(MAX_REPORTED_TEXT).optional(),\n current: z.string().max(MAX_REPORTED_TEXT),\n values: z\n .array(\n z.object({\n id: z.string().min(1).max(MAX_REPORTED_TEXT),\n name: z.string().max(MAX_REPORTED_TEXT),\n description: z.string().max(MAX_REPORTED_TEXT).optional(),\n }),\n )\n .max(MAX_REPORTED_VALUES)\n .readonly(),\n});\n\nconst agentUsageSchema = z.object({\n windows: z\n .array(\n z.object({\n id: z.string().min(1).max(50),\n minutes: z.number().positive(),\n used: z.number().min(0).max(1),\n resetsAt: z.number().optional(),\n }),\n )\n .max(10)\n .readonly(),\n at: z.number(),\n});\n\nexport const agentInfoSchema = z.object({\n id: z.string().min(1),\n name: z.string(),\n version: z.string().optional(),\n ready: z.boolean(),\n problem: z.string().optional(),\n options: z\n .array(agentOptionSchema)\n .max(MAX_REPORTED_VALUES)\n .transform(clipAgentOptions)\n .readonly()\n .optional(),\n usage: agentUsageSchema.optional(),\n outsideName: z\n .string()\n .regex(/^[a-z0-9][a-z0-9_-]{0,79}$/)\n .optional(),\n});\n\nconst ITEM_KINDS = [\n \"prompt\",\n \"answer\",\n \"cancel\",\n \"reply\",\n \"reasoning\",\n \"tool\",\n \"plan\",\n \"ask\",\n \"event\",\n] as const;\n\nconst count = z.coerce.number();\n\nexport const itemRow = z.object({\n id: idSchema(\"item\"),\n thread_id: idSchema(\"thread\"),\n turn_id: idSchema(\"turn\"),\n seq: count,\n at: count,\n kind: z.enum(ITEM_KINDS),\n body: z.unknown(),\n});\n\nexport function toLoggedItem(row: z.output<typeof itemRow>): LoggedItem {\n const common = {\n id: row.id,\n threadId: row.thread_id,\n turnId: row.turn_id,\n seq: row.seq,\n at: row.at,\n };\n switch (row.kind) {\n case \"prompt\":\n return {\n ...common,\n author: \"user\",\n kind: \"prompt\",\n body: chatItemBodies.prompt.body.parse(row.body),\n };\n case \"answer\":\n return {\n ...common,\n author: \"user\",\n kind: \"answer\",\n body: chatItemBodies.answer.body.parse(row.body),\n };\n case \"cancel\":\n return {\n ...common,\n author: \"user\",\n kind: \"cancel\",\n body: chatItemBodies.cancel.body.parse(row.body),\n };\n case \"reply\":\n return {\n ...common,\n author: \"agent\",\n kind: \"reply\",\n body: chatItemBodies.reply.body.parse(row.body),\n };\n case \"reasoning\":\n return {\n ...common,\n author: \"agent\",\n kind: \"reasoning\",\n body: chatItemBodies.reasoning.body.parse(row.body),\n };\n case \"tool\":\n return {\n ...common,\n author: \"agent\",\n kind: \"tool\",\n body: chatItemBodies.tool.body.parse(row.body),\n };\n case \"plan\":\n return {\n ...common,\n author: \"agent\",\n kind: \"plan\",\n body: chatItemBodies.plan.body.parse(row.body),\n };\n case \"ask\":\n return {\n ...common,\n author: \"agent\",\n kind: \"ask\",\n body: chatItemBodies.ask.body.parse(row.body),\n };\n case \"event\":\n return {\n ...common,\n author: \"system\",\n kind: \"event\",\n body: chatItemBodies.event.body.parse(row.body),\n };\n }\n}\n\nexport const threadRow = z.object({\n id: idSchema(\"thread\"),\n title: z.string(),\n host_id: idSchema(\"host\").nullable(),\n agent_id: z.string().nullable(),\n last_seq: count,\n updated_at: count,\n});\n\nexport function toThreadSummary(row: z.output<typeof threadRow>): ThreadSummary {\n const agent: AgentRef | undefined =\n row.host_id !== null && row.agent_id !== null\n ? { hostId: row.host_id, agentId: row.agent_id }\n : undefined;\n return {\n id: row.id,\n title: row.title,\n agent,\n updatedAt: row.updated_at,\n lastSeq: row.last_seq,\n };\n}\n\nexport const TURN_FAILURES = [\n \"agent_exited\",\n \"agent_unavailable\",\n \"device_rejected\",\n \"signature_invalid\",\n \"prompt_expired\",\n \"host_lost\",\n] as const satisfies readonly TurnFailure[];\n\nexport const TURN_STATES = [\"queued\", \"running\", \"done\", \"failed\", \"cancelled\"] as const;\nexport const turnStateSchema = z.enum(TURN_STATES) satisfies z.ZodType<TurnState>;\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@parlor/chat",
3
- "version": "0.4.1",
3
+ "version": "0.4.2",
4
4
  "homepage": "https://cychien.github.io/parlor",
5
5
  "bugs": "https://github.com/cychien/parlor/issues",
6
6
  "license": "MIT",
@@ -31,16 +31,16 @@
31
31
  "dependencies": {
32
32
  "drizzle-orm": "^0.45.4",
33
33
  "zod": "^4.6.5",
34
- "@parlor/agent-ui": "0.4.1",
35
- "@parlor/core": "0.4.1",
36
- "@parlor/server": "0.4.1",
37
- "@parlor/sync": "0.4.1"
34
+ "@parlor/agent-ui": "0.4.2",
35
+ "@parlor/core": "0.4.2",
36
+ "@parlor/server": "0.4.2",
37
+ "@parlor/sync": "0.4.2"
38
38
  },
39
39
  "devDependencies": {
40
40
  "@types/node": "^24.14.0",
41
41
  "typescript": "^7.0.2",
42
42
  "vitest": "^5.0.3",
43
- "@parlor/data": "0.4.1"
43
+ "@parlor/data": "0.4.2"
44
44
  },
45
45
  "scripts": {
46
46
  "build": "tsc -p tsconfig.json",