@cogitator-ai/hono 0.1.14 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (58) hide show
  1. package/README.md +67 -2
  2. package/dist/app.d.ts.map +1 -1
  3. package/dist/app.js +3 -1
  4. package/dist/app.js.map +1 -1
  5. package/dist/index.d.ts +2 -1
  6. package/dist/index.d.ts.map +1 -1
  7. package/dist/index.js +1 -0
  8. package/dist/index.js.map +1 -1
  9. package/dist/middleware/body-limit.d.ts +5 -0
  10. package/dist/middleware/body-limit.d.ts.map +1 -0
  11. package/dist/middleware/body-limit.js +9 -0
  12. package/dist/middleware/body-limit.js.map +1 -0
  13. package/dist/middleware/error-handler.d.ts.map +1 -1
  14. package/dist/middleware/error-handler.js +7 -3
  15. package/dist/middleware/error-handler.js.map +1 -1
  16. package/dist/routes/agents.d.ts.map +1 -1
  17. package/dist/routes/agents.js +43 -56
  18. package/dist/routes/agents.js.map +1 -1
  19. package/dist/routes/swarms.d.ts.map +1 -1
  20. package/dist/routes/swarms.js +50 -71
  21. package/dist/routes/swarms.js.map +1 -1
  22. package/dist/routes/threads.d.ts.map +1 -1
  23. package/dist/routes/threads.js +35 -53
  24. package/dist/routes/threads.js.map +1 -1
  25. package/dist/routes/workflows.d.ts.map +1 -1
  26. package/dist/routes/workflows.js +53 -45
  27. package/dist/routes/workflows.js.map +1 -1
  28. package/dist/streaming/hono-stream-writer.d.ts +0 -1
  29. package/dist/streaming/hono-stream-writer.d.ts.map +1 -1
  30. package/dist/streaming/hono-stream-writer.js +0 -10
  31. package/dist/streaming/hono-stream-writer.js.map +1 -1
  32. package/dist/types.d.ts +19 -1
  33. package/dist/types.d.ts.map +1 -1
  34. package/dist/utils/errors.d.ts +11 -0
  35. package/dist/utils/errors.d.ts.map +1 -0
  36. package/dist/utils/errors.js +28 -0
  37. package/dist/utils/errors.js.map +1 -0
  38. package/dist/utils/lookup.d.ts +2 -0
  39. package/dist/utils/lookup.d.ts.map +1 -0
  40. package/dist/utils/lookup.js +4 -0
  41. package/dist/utils/lookup.js.map +1 -0
  42. package/dist/utils/request.d.ts +15 -0
  43. package/dist/utils/request.d.ts.map +1 -0
  44. package/dist/utils/request.js +37 -0
  45. package/dist/utils/request.js.map +1 -0
  46. package/dist/utils/results.d.ts +22 -0
  47. package/dist/utils/results.d.ts.map +1 -0
  48. package/dist/utils/results.js +37 -0
  49. package/dist/utils/results.js.map +1 -0
  50. package/dist/utils/validation.d.ts +14 -0
  51. package/dist/utils/validation.d.ts.map +1 -0
  52. package/dist/utils/validation.js +103 -0
  53. package/dist/utils/validation.js.map +1 -0
  54. package/dist/websocket/handler.d.ts +4 -12
  55. package/dist/websocket/handler.d.ts.map +1 -1
  56. package/dist/websocket/handler.js +204 -131
  57. package/dist/websocket/handler.js.map +1 -1
  58. package/package.json +10 -9
@@ -0,0 +1,15 @@
1
+ import type { Context } from 'hono';
2
+ import type { HonoEnv } from '../types.js';
3
+ export type JsonBodyResult = {
4
+ ok: true;
5
+ value: unknown;
6
+ } | {
7
+ ok: false;
8
+ };
9
+ export declare function readJsonBody(c: Context<HonoEnv>): Promise<JsonBodyResult>;
10
+ export declare function createRequestAbortController(c: Context<HonoEnv>): AbortController;
11
+ export declare function invalidInput(c: Context<HonoEnv>, message: string): Response;
12
+ export declare function invalidJson(c: Context<HonoEnv>): Response;
13
+ export declare function errorResponse(c: Context<HonoEnv>, error: unknown, label: string): Response;
14
+ export declare function requestAborted(c: Context<HonoEnv>): Response;
15
+ //# sourceMappingURL=request.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"request.d.ts","sourceRoot":"","sources":["../../src/utils/request.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AACpC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAG3C,MAAM,MAAM,cAAc,GAAG;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAA;CAAE,CAAC;AAE1E,wBAAsB,YAAY,CAAC,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,cAAc,CAAC,CAQ/E;AAED,wBAAgB,4BAA4B,CAAC,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,eAAe,CASjF;AAED,wBAAgB,YAAY,CAAC,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,MAAM,GAAG,QAAQ,CAE3E;AAED,wBAAgB,WAAW,CAAC,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,QAAQ,CAEzD;AAED,wBAAgB,aAAa,CAAC,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,QAAQ,CAG1F;AAED,wBAAgB,cAAc,CAAC,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,QAAQ,CAE5D"}
@@ -0,0 +1,37 @@
1
+ import { resolveError } from './errors.js';
2
+ export async function readJsonBody(c) {
3
+ const text = await c.req.text();
4
+ if (!text.trim())
5
+ return { ok: true, value: undefined };
6
+ try {
7
+ return { ok: true, value: JSON.parse(text) };
8
+ }
9
+ catch {
10
+ return { ok: false };
11
+ }
12
+ }
13
+ export function createRequestAbortController(c) {
14
+ const controller = new AbortController();
15
+ const signal = c.req.raw.signal;
16
+ if (signal.aborted) {
17
+ controller.abort();
18
+ }
19
+ else {
20
+ signal.addEventListener('abort', () => controller.abort(), { once: true });
21
+ }
22
+ return controller;
23
+ }
24
+ export function invalidInput(c, message) {
25
+ return c.json({ error: { message, code: 'INVALID_INPUT' } }, 400);
26
+ }
27
+ export function invalidJson(c) {
28
+ return invalidInput(c, 'Invalid JSON body');
29
+ }
30
+ export function errorResponse(c, error, label) {
31
+ const { status, body } = resolveError(error, label);
32
+ return c.json(body, status);
33
+ }
34
+ export function requestAborted(c) {
35
+ return c.json({ error: { message: 'Request aborted', code: 'ABORTED' } }, 400);
36
+ }
37
+ //# sourceMappingURL=request.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"request.js","sourceRoot":"","sources":["../../src/utils/request.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAI3C,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,CAAmB;IACpD,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;IAChC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;QAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;IACxD,IAAI,CAAC;QACH,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAY,EAAE,CAAC;IAC1D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC;IACvB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,4BAA4B,CAAC,CAAmB;IAC9D,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IACzC,MAAM,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC;IAChC,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,UAAU,CAAC,KAAK,EAAE,CAAC;IACrB,CAAC;SAAM,CAAC;QACN,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7E,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,CAAmB,EAAE,OAAe;IAC/D,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,eAAe,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;AACpE,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,CAAmB;IAC7C,OAAO,YAAY,CAAC,CAAC,EAAE,mBAAmB,CAAC,CAAC;AAC9C,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,CAAmB,EAAE,KAAc,EAAE,KAAa;IAC9E,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,YAAY,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IACpD,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AAC9B,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,CAAmB;IAChD,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,iBAAiB,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;AACjF,CAAC"}
@@ -0,0 +1,22 @@
1
+ import type { StrategyResult, SwarmResourceUsage, WorkflowResult, WorkflowState } from '@cogitator-ai/types';
2
+ import type { SwarmRunResponse, WorkflowRunResponse } from '../types.js';
3
+ export interface SerializedSwarmUsage {
4
+ totalTokens: number;
5
+ totalCost: number;
6
+ elapsedTime: number;
7
+ agentUsage: Record<string, {
8
+ tokens: number;
9
+ cost: number;
10
+ runs: number;
11
+ duration: number;
12
+ }>;
13
+ }
14
+ export declare function toWorkflowRunResponse(result: WorkflowResult<WorkflowState>): WorkflowRunResponse;
15
+ export declare function serializeSwarmUsage(usage: SwarmResourceUsage): SerializedSwarmUsage;
16
+ export declare function toSwarmRunResponse(swarm: {
17
+ id: string;
18
+ name: string;
19
+ strategyType: string;
20
+ getResourceUsage(): SwarmResourceUsage;
21
+ }, result: StrategyResult): SwarmRunResponse;
22
+ //# sourceMappingURL=results.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"results.d.ts","sourceRoot":"","sources":["../../src/utils/results.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EACd,kBAAkB,EAClB,cAAc,EACd,aAAa,EACd,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAEzE,MAAM,WAAW,oBAAoB;IACnC,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC9F;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,cAAc,CAAC,aAAa,CAAC,GAAG,mBAAmB,CAQhG;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,kBAAkB,GAAG,oBAAoB,CAOnF;AAED,wBAAgB,kBAAkB,CAChC,KAAK,EAAE;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,gBAAgB,IAAI,kBAAkB,CAAA;CAAE,EACjG,MAAM,EAAE,cAAc,GACrB,gBAAgB,CAmBlB"}
@@ -0,0 +1,37 @@
1
+ export function toWorkflowRunResponse(result) {
2
+ return {
3
+ workflowId: result.workflowId,
4
+ workflowName: result.workflowName,
5
+ state: result.state,
6
+ duration: result.duration,
7
+ nodeResults: Object.fromEntries(result.nodeResults),
8
+ };
9
+ }
10
+ export function serializeSwarmUsage(usage) {
11
+ return {
12
+ totalTokens: usage.totalTokens,
13
+ totalCost: usage.totalCost,
14
+ elapsedTime: usage.elapsedTime,
15
+ agentUsage: Object.fromEntries(usage.agentUsage),
16
+ };
17
+ }
18
+ export function toSwarmRunResponse(swarm, result) {
19
+ const agentResults = {};
20
+ for (const [agentName, agentResult] of result.agentResults) {
21
+ agentResults[agentName] = { output: agentResult.output, usage: agentResult.usage };
22
+ }
23
+ const usage = swarm.getResourceUsage();
24
+ return {
25
+ swarmId: swarm.id,
26
+ swarmName: swarm.name,
27
+ strategy: swarm.strategyType,
28
+ output: result.output,
29
+ agentResults,
30
+ usage: {
31
+ totalTokens: usage.totalTokens,
32
+ totalCost: usage.totalCost,
33
+ elapsedTime: usage.elapsedTime,
34
+ },
35
+ };
36
+ }
37
+ //# sourceMappingURL=results.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"results.js","sourceRoot":"","sources":["../../src/utils/results.ts"],"names":[],"mappings":"AAeA,MAAM,UAAU,qBAAqB,CAAC,MAAqC;IACzE,OAAO;QACL,UAAU,EAAE,MAAM,CAAC,UAAU;QAC7B,YAAY,EAAE,MAAM,CAAC,YAAY;QACjC,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,WAAW,EAAE,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,WAAW,CAAC;KACpD,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,KAAyB;IAC3D,OAAO;QACL,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,UAAU,EAAE,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,UAAU,CAAC;KACjD,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,kBAAkB,CAChC,KAAiG,EACjG,MAAsB;IAEtB,MAAM,YAAY,GAA4B,EAAE,CAAC;IACjD,KAAK,MAAM,CAAC,SAAS,EAAE,WAAW,CAAC,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;QAC3D,YAAY,CAAC,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,KAAK,EAAE,WAAW,CAAC,KAAK,EAAE,CAAC;IACrF,CAAC;IAED,MAAM,KAAK,GAAG,KAAK,CAAC,gBAAgB,EAAE,CAAC;IACvC,OAAO;QACL,OAAO,EAAE,KAAK,CAAC,EAAE;QACjB,SAAS,EAAE,KAAK,CAAC,IAAI;QACrB,QAAQ,EAAE,KAAK,CAAC,YAAY;QAC5B,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,YAAY;QACZ,KAAK,EAAE;YACL,WAAW,EAAE,KAAK,CAAC,WAAW;YAC9B,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,WAAW,EAAE,KAAK,CAAC,WAAW;SAC/B;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,14 @@
1
+ import type { AddMessageRequest, AgentRunRequest, SwarmRunRequest, WorkflowRunRequest } from '../types.js';
2
+ export type ParseResult<T> = {
3
+ ok: true;
4
+ value: T;
5
+ } | {
6
+ ok: false;
7
+ message: string;
8
+ };
9
+ export declare function isRecord(value: unknown): value is Record<string, unknown>;
10
+ export declare function parseAgentRunRequest(body: unknown): ParseResult<AgentRunRequest>;
11
+ export declare function parseSwarmRunRequest(body: unknown): ParseResult<SwarmRunRequest>;
12
+ export declare function parseWorkflowRunRequest(body: unknown): ParseResult<WorkflowRunRequest>;
13
+ export declare function parseAddMessageRequest(body: unknown): ParseResult<AddMessageRequest>;
14
+ //# sourceMappingURL=validation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../src/utils/validation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,iBAAiB,EACjB,eAAe,EACf,eAAe,EACf,kBAAkB,EACnB,MAAM,aAAa,CAAC;AAErB,MAAM,MAAM,WAAW,CAAC,CAAC,IAAI;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,CAAC,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAQrF,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAEzE;AAkCD,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,OAAO,GAAG,WAAW,CAAC,eAAe,CAAC,CAEhF;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,OAAO,GAAG,WAAW,CAAC,eAAe,CAAC,CAUhF;AAED,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,OAAO,GAAG,WAAW,CAAC,kBAAkB,CAAC,CA+BtF;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,OAAO,GAAG,WAAW,CAAC,iBAAiB,CAAC,CAoBpF"}
@@ -0,0 +1,103 @@
1
+ const MESSAGE_ROLES = ['user', 'assistant', 'system'];
2
+ function isMessageRole(value) {
3
+ return MESSAGE_ROLES.some((role) => role === value);
4
+ }
5
+ export function isRecord(value) {
6
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
7
+ }
8
+ function isPositiveInteger(value) {
9
+ return typeof value === 'number' && Number.isInteger(value) && value > 0;
10
+ }
11
+ function fail(message) {
12
+ return { ok: false, message };
13
+ }
14
+ function parseRunFields(body) {
15
+ if (!isRecord(body) || body.input === undefined || body.input === null || body.input === '') {
16
+ return fail('Missing required field: input');
17
+ }
18
+ if (typeof body.input !== 'string')
19
+ return fail('Field "input" must be a string');
20
+ if (body.context !== undefined && !isRecord(body.context)) {
21
+ return fail('Field "context" must be an object');
22
+ }
23
+ if (body.threadId !== undefined && (typeof body.threadId !== 'string' || !body.threadId)) {
24
+ return fail('Field "threadId" must be a non-empty string');
25
+ }
26
+ return {
27
+ ok: true,
28
+ value: {
29
+ input: body.input,
30
+ ...(body.context !== undefined && { context: body.context }),
31
+ ...(body.threadId !== undefined && { threadId: body.threadId }),
32
+ },
33
+ };
34
+ }
35
+ export function parseAgentRunRequest(body) {
36
+ return parseRunFields(body);
37
+ }
38
+ export function parseSwarmRunRequest(body) {
39
+ const parsed = parseRunFields(body);
40
+ if (!parsed.ok)
41
+ return parsed;
42
+ const timeout = isRecord(body) ? body.timeout : undefined;
43
+ if (timeout === undefined)
44
+ return parsed;
45
+ if (typeof timeout !== 'number' || !Number.isFinite(timeout) || timeout <= 0) {
46
+ return fail('Field "timeout" must be a positive number');
47
+ }
48
+ return { ok: true, value: { ...parsed.value, timeout } };
49
+ }
50
+ export function parseWorkflowRunRequest(body) {
51
+ if (body === undefined || body === null)
52
+ return { ok: true, value: {} };
53
+ if (!isRecord(body))
54
+ return fail('Request body must be a JSON object');
55
+ if (body.input !== undefined && !isRecord(body.input)) {
56
+ return fail('Field "input" must be an object');
57
+ }
58
+ const request = {};
59
+ if (body.input !== undefined)
60
+ request.input = body.input;
61
+ if (body.options !== undefined) {
62
+ if (!isRecord(body.options))
63
+ return fail('Field "options" must be an object');
64
+ const { maxConcurrency, maxIterations, checkpoint } = body.options;
65
+ if (maxConcurrency !== undefined && !isPositiveInteger(maxConcurrency)) {
66
+ return fail('Field "options.maxConcurrency" must be a positive integer');
67
+ }
68
+ if (maxIterations !== undefined && !isPositiveInteger(maxIterations)) {
69
+ return fail('Field "options.maxIterations" must be a positive integer');
70
+ }
71
+ if (checkpoint !== undefined && typeof checkpoint !== 'boolean') {
72
+ return fail('Field "options.checkpoint" must be a boolean');
73
+ }
74
+ request.options = {
75
+ ...(maxConcurrency !== undefined && { maxConcurrency }),
76
+ ...(maxIterations !== undefined && { maxIterations }),
77
+ ...(checkpoint !== undefined && { checkpoint }),
78
+ };
79
+ }
80
+ return { ok: true, value: request };
81
+ }
82
+ export function parseAddMessageRequest(body) {
83
+ if (!isRecord(body) || !body.role || !body.content) {
84
+ return fail('Missing required fields: role, content');
85
+ }
86
+ if (!isMessageRole(body.role)) {
87
+ return fail('Field "role" must be one of: user, assistant, system');
88
+ }
89
+ if (typeof body.content !== 'string')
90
+ return fail('Field "content" must be a string');
91
+ if (body.metadata !== undefined && !isRecord(body.metadata)) {
92
+ return fail('Field "metadata" must be an object');
93
+ }
94
+ return {
95
+ ok: true,
96
+ value: {
97
+ role: body.role,
98
+ content: body.content,
99
+ ...(body.metadata !== undefined && { metadata: body.metadata }),
100
+ },
101
+ };
102
+ }
103
+ //# sourceMappingURL=validation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/utils/validation.ts"],"names":[],"mappings":"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"}
@@ -1,14 +1,6 @@
1
1
  import { Hono } from 'hono';
2
- import type { HonoEnv, CogitatorContext } from '../types.js';
3
- interface ClientState {
4
- id: string;
5
- abortController?: AbortController;
6
- }
7
- export declare function createWebSocketRoutes(_path?: string): Hono<HonoEnv>;
8
- export declare function handleWebSocketMessage(socket: {
9
- send: (data: string) => void;
10
- readyState: number;
11
- }, data: string, ctx: CogitatorContext, state: ClientState): Promise<void>;
12
- export declare function createClientState(): ClientState;
13
- export {};
2
+ import type { CogitatorContext, HonoEnv, WebSocketClientState, WebSocketConfig, WebSocketLike } from '../types.js';
3
+ export declare function createWebSocketRoutes(config?: WebSocketConfig | string): Hono<HonoEnv>;
4
+ export declare function createClientState(): WebSocketClientState;
5
+ export declare function handleWebSocketMessage(socket: WebSocketLike, data: string, ctx: CogitatorContext, state: WebSocketClientState): Promise<void>;
14
6
  //# sourceMappingURL=handler.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../src/websocket/handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAE5B,OAAO,KAAK,EAAE,OAAO,EAAuC,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAGlG,UAAU,WAAW;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,eAAe,CAAC,EAAE,eAAe,CAAC;CACnC;AAED,wBAAgB,qBAAqB,CAAC,KAAK,GAAE,MAAc,GAAG,IAAI,CAAC,OAAO,CAAC,CAW1E;AAED,wBAAsB,sBAAsB,CAC1C,MAAM,EAAE;IAAE,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,EAC5D,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,gBAAgB,EACrB,KAAK,EAAE,WAAW,GACjB,OAAO,CAAC,IAAI,CAAC,CAkBf;AAED,wBAAgB,iBAAiB,IAAI,WAAW,CAI/C"}
1
+ {"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../src/websocket/handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAE5B,OAAO,KAAK,EACV,gBAAgB,EAChB,OAAO,EACP,oBAAoB,EACpB,eAAe,EACf,aAAa,EAGd,MAAM,aAAa,CAAC;AAqBrB,wBAAgB,qBAAqB,CAAC,MAAM,GAAE,eAAe,GAAG,MAAW,GAAG,IAAI,CAAC,OAAO,CAAC,CA2C1F;AAwBD,wBAAgB,iBAAiB,IAAI,oBAAoB,CAExD;AAED,wBAAsB,sBAAsB,CAC1C,MAAM,EAAE,aAAa,EACrB,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,gBAAgB,EACrB,KAAK,EAAE,oBAAoB,GAC1B,OAAO,CAAC,IAAI,CAAC,CAkBf"}