@dxos/assistant 0.8.4-main.ae835ea → 0.8.4-main.bc674ce

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 (116) hide show
  1. package/dist/lib/browser/{chunk-4VIJTKPM.mjs → chunk-7CDDG6LL.mjs} +252 -28
  2. package/dist/lib/browser/chunk-7CDDG6LL.mjs.map +7 -0
  3. package/dist/lib/browser/chunk-J5LGTIGS.mjs +10 -0
  4. package/dist/lib/browser/extraction/index.mjs +119 -166
  5. package/dist/lib/browser/extraction/index.mjs.map +4 -4
  6. package/dist/lib/browser/index.mjs +239 -289
  7. package/dist/lib/browser/index.mjs.map +4 -4
  8. package/dist/lib/browser/meta.json +1 -1
  9. package/dist/lib/browser/testing/index.mjs +32 -0
  10. package/dist/lib/browser/testing/index.mjs.map +7 -0
  11. package/dist/lib/node-esm/{chunk-AUUC7II4.mjs → chunk-CC7ER6Q3.mjs} +251 -28
  12. package/dist/lib/node-esm/chunk-CC7ER6Q3.mjs.map +7 -0
  13. package/dist/lib/node-esm/chunk-HSLMI22Q.mjs +11 -0
  14. package/dist/lib/node-esm/extraction/index.mjs +119 -166
  15. package/dist/lib/node-esm/extraction/index.mjs.map +4 -4
  16. package/dist/lib/node-esm/index.mjs +239 -289
  17. package/dist/lib/node-esm/index.mjs.map +4 -4
  18. package/dist/lib/node-esm/meta.json +1 -1
  19. package/dist/lib/node-esm/testing/index.mjs +33 -0
  20. package/dist/lib/node-esm/testing/index.mjs.map +7 -0
  21. package/dist/types/src/conversation/context.d.ts +88 -62
  22. package/dist/types/src/conversation/context.d.ts.map +1 -1
  23. package/dist/types/src/conversation/context.test.d.ts +2 -0
  24. package/dist/types/src/conversation/context.test.d.ts.map +1 -0
  25. package/dist/types/src/conversation/conversation.d.ts +16 -16
  26. package/dist/types/src/conversation/conversation.d.ts.map +1 -1
  27. package/dist/types/src/conversation/conversation.test.d.ts +2 -0
  28. package/dist/types/src/conversation/conversation.test.d.ts.map +1 -0
  29. package/dist/types/src/errors.d.ts +22 -30
  30. package/dist/types/src/errors.d.ts.map +1 -1
  31. package/dist/types/src/execution-graph.d.ts +5 -2
  32. package/dist/types/src/execution-graph.d.ts.map +1 -1
  33. package/dist/types/src/extraction/extraction-llm-function/extraction-llm-function.d.ts.map +1 -1
  34. package/dist/types/src/extraction/extraction-ner-function/extraction-ner-function.d.ts +254 -252
  35. package/dist/types/src/extraction/extraction-ner-function/extraction-ner-function.d.ts.map +1 -1
  36. package/dist/types/src/extraction/extraction.d.ts +344 -309
  37. package/dist/types/src/extraction/extraction.d.ts.map +1 -1
  38. package/dist/types/src/extraction/quotes.d.ts +2 -2
  39. package/dist/types/src/extraction/quotes.d.ts.map +1 -1
  40. package/dist/types/src/functions/services.d.ts +4 -3
  41. package/dist/types/src/functions/services.d.ts.map +1 -1
  42. package/dist/types/src/functions.test.d.ts +2 -0
  43. package/dist/types/src/functions.test.d.ts.map +1 -0
  44. package/dist/types/src/session/GenericToolkit.d.ts +85 -0
  45. package/dist/types/src/session/GenericToolkit.d.ts.map +1 -0
  46. package/dist/types/src/session/artifact-diff.d.ts +1 -1
  47. package/dist/types/src/session/artifact-diff.d.ts.map +1 -1
  48. package/dist/types/src/session/format.d.ts +4 -178
  49. package/dist/types/src/session/format.d.ts.map +1 -1
  50. package/dist/types/src/session/index.d.ts +1 -0
  51. package/dist/types/src/session/index.d.ts.map +1 -1
  52. package/dist/types/src/session/observer.d.ts +6 -5
  53. package/dist/types/src/session/observer.d.ts.map +1 -1
  54. package/dist/types/src/session/session.d.ts +16 -11
  55. package/dist/types/src/session/session.d.ts.map +1 -1
  56. package/dist/types/src/session/toolkit.d.ts +5 -6
  57. package/dist/types/src/session/toolkit.d.ts.map +1 -1
  58. package/dist/types/src/session/version-pin.d.ts +3 -3
  59. package/dist/types/src/session/version-pin.d.ts.map +1 -1
  60. package/dist/types/src/testing/index.d.ts +2 -0
  61. package/dist/types/src/testing/index.d.ts.map +1 -0
  62. package/dist/types/src/testing/layer.d.ts +21 -0
  63. package/dist/types/src/testing/layer.d.ts.map +1 -0
  64. package/dist/types/src/types/artifact.d.ts +14 -2
  65. package/dist/types/src/types/artifact.d.ts.map +1 -1
  66. package/dist/types/tsconfig.tsbuildinfo +1 -1
  67. package/package.json +38 -27
  68. package/src/conversation/context.test.ts +46 -0
  69. package/src/conversation/context.ts +183 -66
  70. package/src/conversation/conversation.test.ts +65 -0
  71. package/src/conversation/conversation.ts +51 -54
  72. package/src/diff.test.ts +3 -3
  73. package/src/errors.ts +2 -2
  74. package/src/execution-graph.test.ts +45 -43
  75. package/src/execution-graph.ts +23 -14
  76. package/src/extraction/extraction-llm-function/extraction-llm-function.test.ts +2 -2
  77. package/src/extraction/extraction-llm-function/extraction-llm-function.ts +44 -54
  78. package/src/extraction/extraction-ner-function/extraction-ner-function.test.ts +14 -13
  79. package/src/extraction/extraction-ner-function/extraction-ner-function.ts +36 -44
  80. package/src/extraction/extraction-ner-function/named-entity-recognition.test.ts +10 -5
  81. package/src/extraction/extraction.ts +9 -8
  82. package/src/extraction/quotes.ts +4 -5
  83. package/src/functions/services.ts +41 -19
  84. package/src/functions.conversations.json +1 -0
  85. package/src/functions.test.ts +74 -0
  86. package/src/session/GenericToolkit.ts +131 -0
  87. package/src/session/artifact-diff.ts +1 -1
  88. package/src/session/format.test.ts +103 -39
  89. package/src/session/format.ts +17 -16
  90. package/src/session/index.ts +2 -0
  91. package/src/session/observer.ts +5 -3
  92. package/src/session/session.conversations.json +1 -1
  93. package/src/session/session.test.ts +7 -13
  94. package/src/session/session.ts +40 -19
  95. package/src/session/toolkit.ts +13 -22
  96. package/src/session/version-pin.ts +6 -6
  97. package/src/templates/{format.tpl → instructions/format.tpl} +1 -0
  98. package/src/templates/system.ts +2 -2
  99. package/src/testing/index.ts +5 -0
  100. package/src/testing/layer.ts +78 -0
  101. package/src/types/artifact.ts +33 -3
  102. package/dist/lib/browser/chunk-4VIJTKPM.mjs.map +0 -7
  103. package/dist/lib/browser/chunk-UB26N5UF.mjs +0 -89
  104. package/dist/lib/browser/chunk-UB26N5UF.mjs.map +0 -7
  105. package/dist/lib/browser/named-entity-recognition-QPYHML66.mjs +0 -13
  106. package/dist/lib/node-esm/chunk-AUUC7II4.mjs.map +0 -7
  107. package/dist/lib/node-esm/chunk-BCFXTNSK.mjs +0 -91
  108. package/dist/lib/node-esm/chunk-BCFXTNSK.mjs.map +0 -7
  109. package/dist/lib/node-esm/named-entity-recognition-2HDF46YX.mjs +0 -14
  110. package/dist/types/src/summarization/summarization.test.d.ts +0 -2
  111. package/dist/types/src/summarization/summarization.test.d.ts.map +0 -1
  112. package/src/summarization/summarization.test.ts +0 -202
  113. /package/dist/lib/browser/{named-entity-recognition-QPYHML66.mjs.map → chunk-J5LGTIGS.mjs.map} +0 -0
  114. /package/dist/lib/node-esm/{named-entity-recognition-2HDF46YX.mjs.map → chunk-HSLMI22Q.mjs.map} +0 -0
  115. /package/src/extraction/extraction-llm-function/{instructions.tpl → transcription-instructions.tpl} +0 -0
  116. /package/src/templates/{system.tpl → instructions/system.tpl} +0 -0
@@ -1,98 +1,124 @@
1
- import { type ReadonlySignal } from '@preact/signals-core';
1
+ import { Atom, Registry } from '@effect-atom/atom-react';
2
2
  import * as Context from 'effect/Context';
3
3
  import * as Schema from 'effect/Schema';
4
4
  import { Blueprint } from '@dxos/blueprints';
5
5
  import { Resource } from '@dxos/context';
6
- import { DXN, type Ref, Type } from '@dxos/echo';
6
+ import { DXN, Obj, type Ref, Type } from '@dxos/echo';
7
7
  import { type Queue } from '@dxos/echo-db';
8
8
  import { ComplexSet } from '@dxos/util';
9
9
  /**
10
10
  * Thread message that binds or unbinds contextual objects to a conversation.
11
11
  */
12
- export declare const ContextBinding: Type.obj<Schema.Struct<{
13
- blueprints: Schema.Struct<{
14
- added: Schema.Array$<Type.ref<Type.obj<Schema.Struct<{
15
- key: Schema.SchemaClass<string, string, never>;
16
- name: Schema.SchemaClass<string, string, never>;
17
- description: Schema.optional<typeof Schema.String>;
18
- instructions: Schema.mutable<Schema.Struct<{
19
- source: Schema.SchemaClass<import("@dxos/echo/internal").Ref<Type.OfKind<import("@dxos/echo/internal").EntityKind.Object> & {
20
- content: string;
21
- }>, import("@dxos/echo-protocol").EncodedReference, never>;
22
- inputs: Schema.optional<Schema.mutable<Schema.Array$<Schema.mutable<Schema.Struct<{
23
- name: typeof Schema.String;
24
- kind: Schema.optional<Schema.Literal<["value", "pass-through", "retriever", "function", "query", "resolver", "context", "schema"]>>;
25
- default: Schema.optional<typeof Schema.Any>;
26
- }>>>>>;
27
- }>>;
28
- tools: Schema.Array$<Schema.brand<typeof Schema.String, "ToolId">>;
29
- }>>>>;
30
- removed: Schema.Array$<Type.ref<Type.obj<Schema.Struct<{
31
- key: Schema.SchemaClass<string, string, never>;
32
- name: Schema.SchemaClass<string, string, never>;
33
- description: Schema.optional<typeof Schema.String>;
34
- instructions: Schema.mutable<Schema.Struct<{
35
- source: Schema.SchemaClass<import("@dxos/echo/internal").Ref<Type.OfKind<import("@dxos/echo/internal").EntityKind.Object> & {
36
- content: string;
37
- }>, import("@dxos/echo-protocol").EncodedReference, never>;
38
- inputs: Schema.optional<Schema.mutable<Schema.Array$<Schema.mutable<Schema.Struct<{
39
- name: typeof Schema.String;
40
- kind: Schema.optional<Schema.Literal<["value", "pass-through", "retriever", "function", "query", "resolver", "context", "schema"]>>;
41
- default: Schema.optional<typeof Schema.Any>;
42
- }>>>>>;
43
- }>>;
44
- tools: Schema.Array$<Schema.brand<typeof Schema.String, "ToolId">>;
45
- }>>>>;
46
- }>;
47
- objects: Schema.Struct<{
48
- added: Schema.Array$<Type.ref<Schema.Schema<Type.Expando, {
49
- [x: string]: any;
50
- id: string;
51
- }, never>>>;
52
- removed: Schema.Array$<Type.ref<Schema.Schema<Type.Expando, {
53
- [x: string]: any;
54
- id: string;
55
- }, never>>>;
56
- }>;
57
- }>>;
12
+ export declare const ContextBinding: Type.Obj<{
13
+ readonly blueprints: {
14
+ readonly added: readonly import("@dxos/echo/internal").Ref<import("@dxos/echo/Entity").OfKind<import("@dxos/echo/internal").EntityKind.Object> & {
15
+ readonly description?: string | undefined;
16
+ readonly name: string;
17
+ readonly key: string;
18
+ readonly instructions: {
19
+ readonly source: import("@dxos/echo/internal").Ref<import("@dxos/echo/Entity").OfKind<import("@dxos/echo/internal").EntityKind.Object> & {
20
+ readonly content: string;
21
+ }>;
22
+ readonly inputs?: readonly {
23
+ readonly function?: string | undefined;
24
+ readonly name: string;
25
+ readonly kind?: "function" | "value" | "pass-through" | "retriever" | "query" | "resolver" | "context" | "schema" | undefined;
26
+ readonly default?: any;
27
+ }[] | undefined;
28
+ };
29
+ readonly tools: readonly (string & import("effect/Brand").Brand<"ToolId">)[];
30
+ }>[];
31
+ readonly removed: readonly import("@dxos/echo/internal").Ref<import("@dxos/echo/Entity").OfKind<import("@dxos/echo/internal").EntityKind.Object> & {
32
+ readonly description?: string | undefined;
33
+ readonly name: string;
34
+ readonly key: string;
35
+ readonly instructions: {
36
+ readonly source: import("@dxos/echo/internal").Ref<import("@dxos/echo/Entity").OfKind<import("@dxos/echo/internal").EntityKind.Object> & {
37
+ readonly content: string;
38
+ }>;
39
+ readonly inputs?: readonly {
40
+ readonly function?: string | undefined;
41
+ readonly name: string;
42
+ readonly kind?: "function" | "value" | "pass-through" | "retriever" | "query" | "resolver" | "context" | "schema" | undefined;
43
+ readonly default?: any;
44
+ }[] | undefined;
45
+ };
46
+ readonly tools: readonly (string & import("effect/Brand").Brand<"ToolId">)[];
47
+ }>[];
48
+ };
49
+ readonly objects: {
50
+ readonly added: readonly import("@dxos/echo/internal").Ref<any>[];
51
+ readonly removed: readonly import("@dxos/echo/internal").Ref<any>[];
52
+ };
53
+ }, Schema.Struct.Fields>;
58
54
  export interface ContextBinding extends Schema.Schema.Type<typeof ContextBinding> {
59
55
  }
60
56
  export type BindingProps = Partial<{
61
57
  blueprints: Ref.Ref<Blueprint.Blueprint>[];
62
- objects: Ref.Ref<Type.Expando>[];
58
+ objects: Ref.Ref<Obj.Unknown>[];
63
59
  }>;
64
60
  export declare class Bindings {
65
61
  readonly blueprints: ComplexSet<Ref.Ref<Blueprint.Blueprint>>;
66
- readonly objects: ComplexSet<Ref.Ref<Type.Expando>>;
62
+ readonly objects: ComplexSet<Ref.Ref<Obj.Unknown>>;
67
63
  toJSON(): {
68
64
  blueprints: DXN.String[];
69
65
  objects: DXN.String[];
70
66
  };
71
67
  }
68
+ export type AiContextBinderOptions = {
69
+ queue: Queue;
70
+ registry?: Registry.Registry;
71
+ };
72
72
  /**
73
73
  * Manages bindings of blueprints and objects to a conversation.
74
74
  */
75
75
  export declare class AiContextBinder extends Resource {
76
+ private readonly _blueprints;
77
+ private readonly _objects;
78
+ private readonly _registry;
76
79
  private readonly _queue;
80
+ constructor(options: AiContextBinderOptions);
81
+ /**
82
+ * Returns the blueprints atom for subscription.
83
+ */
84
+ get blueprints(): Atom.Atom<Blueprint.Blueprint[]>;
85
+ /**
86
+ * Returns the objects atom for subscription.
87
+ */
88
+ get objects(): Atom.Atom<Obj.Unknown[]>;
89
+ /**
90
+ * Gets the current blueprints value.
91
+ */
92
+ getBlueprints(): Blueprint.Blueprint[];
77
93
  /**
78
- * Reactive query of all bindings.
94
+ * Gets the current objects value.
79
95
  */
80
- private _bindings?;
81
- private _blueprints?;
82
- private _objects?;
83
- constructor(_queue: Queue);
84
- get bindings(): ReadonlySignal<Bindings>;
85
- get blueprints(): ReadonlySignal<Ref.Ref<Blueprint.Blueprint>[]>;
86
- get objects(): ReadonlySignal<Ref.Ref<Type.Expando>[]>;
96
+ getObjects(): Obj.Unknown[];
97
+ /**
98
+ * Subscribe to changes in blueprints.
99
+ */
100
+ subscribeBlueprints(cb: (blueprints: Blueprint.Blueprint[]) => void): () => void;
101
+ /**
102
+ * Subscribe to changes in objects.
103
+ */
104
+ subscribeObjects(cb: (objects: Obj.Unknown[]) => void): () => void;
87
105
  protected _open(): Promise<void>;
106
+ private _updateBindings;
88
107
  protected _close(): Promise<void>;
108
+ bind({ blueprints, objects }: BindingProps): Promise<void>;
109
+ unbind({ blueprints, objects }: BindingProps): Promise<void>;
89
110
  /**
90
- * Asynchronous query of all bindings.
111
+ * Process bindings to filter duplicates and determine next state.
112
+ */
113
+ private _processBindings;
114
+ /**
115
+ * Reduce results into sets of blueprints and objects.
91
116
  */
92
- query(): Promise<Bindings>;
93
- bind(props: BindingProps): Promise<void>;
94
- unbind(props: BindingProps): Promise<void>;
95
117
  private _reduce;
118
+ /**
119
+ * Resolve references to objects, loading them first if needed and falling back to existing objects.
120
+ */
121
+ private _resolve;
96
122
  }
97
123
  declare const AiContextService_base: Context.TagClass<AiContextService, "@dxos/assistant/AiContextService", {
98
124
  binder: AiContextBinder;
@@ -1 +1 @@
1
- {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../../src/conversation/context.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,cAAc,EAAY,MAAM,sBAAsB,CAAC;AAErE,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAC;AAE1C,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAExC,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,GAAG,EAAsB,KAAK,GAAG,EAAiB,IAAI,EAAE,MAAM,YAAY,CAAC;AACpF,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,eAAe,CAAC;AAE3C,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAExC;;GAEG;AAEH,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgB1B,CAAC;AAEF,MAAM,WAAW,cAAe,SAAQ,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,cAAc,CAAC;CAAG;AAEpF,MAAM,MAAM,YAAY,GAAG,OAAO,CAAC;IACjC,UAAU,EAAE,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC;IAC3C,OAAO,EAAE,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;CAClC,CAAC,CAAC;AAEH,qBAAa,QAAQ;IACnB,QAAQ,CAAC,UAAU,2CAA6E;IAEhG,QAAQ,CAAC,OAAO,oCAA+E;IAE/F,MAAM;;;;CAMP;AAED;;GAEG;AAEH,qBAAa,eAAgB,SAAQ,QAAQ;IAS/B,OAAO,CAAC,QAAQ,CAAC,MAAM;IARnC;;OAEG;IAEH,OAAO,CAAC,SAAS,CAAC,CAA2B;IAC7C,OAAO,CAAC,WAAW,CAAC,CAAiD;IACrE,OAAO,CAAC,QAAQ,CAAC,CAA0C;gBAE9B,MAAM,EAAE,KAAK;IAI1C,IAAI,QAAQ,6BAGX;IAED,IAAI,UAAU,mDAGb;IAED,IAAI,OAAO,4CAGV;cAGwB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;cAQtB,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAMhD;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,QAAQ,CAAC;IAM1B,IAAI,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAyBxC,MAAM,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAmBhD,OAAO,CAAC,OAAO;CAmBhB;;YAKW,eAAe;;AAH3B,qBAAa,gBAAiB,SAAQ,qBAKnC;CAAG"}
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../../src/conversation/context.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=context.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.test.d.ts","sourceRoot":"","sources":["../../../../src/conversation/context.test.ts"],"names":[],"mappings":""}
@@ -1,41 +1,41 @@
1
1
  import type * as Toolkit from '@effect/ai/Toolkit';
2
+ import type { Registry } from '@effect-atom/atom-react';
2
3
  import * as Effect from 'effect/Effect';
3
4
  import { Resource } from '@dxos/context';
4
5
  import { type Queue } from '@dxos/echo-db';
5
- import { DataType } from '@dxos/schema';
6
+ import { Message } from '@dxos/types';
6
7
  import { type AiSessionRunError, type AiSessionRunRequirements, type GenerationObserver } from '../session';
7
8
  import { AiContextBinder, type ContextBinding } from './context';
8
- export interface AiConversationRunParams {
9
+ export interface AiConversationRunProps {
9
10
  prompt: string;
10
11
  system?: string;
11
12
  observer?: GenerationObserver;
12
13
  }
14
+ export type AiConversationOptions = {
15
+ queue: Queue<Message.Message | ContextBinding>;
16
+ toolkit?: Toolkit.Any;
17
+ registry?: Registry.Registry;
18
+ };
13
19
  /**
14
20
  * Durable conversation state (initiated by users and agents) backed by a Queue.
15
21
  * Executes tools based on AI responses and supports cancellation of in-progress requests.
16
22
  */
17
23
  export declare class AiConversation extends Resource {
18
24
  /**
19
- * Message and binding queue.
25
+ * Blueprints and objects bound to the conversation.
20
26
  */
27
+ private readonly _binder;
21
28
  private readonly _queue;
22
- /**
23
- * Blueprints bound to the conversation.
24
- */
25
- private readonly _context;
26
- /**
27
- * Toolkit from the current session request.
28
- */
29
- private _toolkit;
30
- constructor(queue: Queue<DataType.Message | ContextBinding>);
29
+ private readonly _toolkit?;
30
+ constructor(options: AiConversationOptions);
31
31
  protected _open(): Promise<void>;
32
- protected _close(): Promise<void>;
32
+ get queue(): Queue<Message.Message | ContextBinding>;
33
33
  get context(): AiContextBinder;
34
- get toolkit(): Toolkit.WithHandler<any> | undefined;
35
- getHistory(): Promise<DataType.Message[]>;
34
+ get toolkit(): Toolkit.Any | undefined;
35
+ getHistory(): Promise<Message.Message[]>;
36
36
  /**
37
37
  * Creates a new cancelable request effect.
38
38
  */
39
- createRequest(params: AiConversationRunParams): Effect.Effect<DataType.Message[], AiSessionRunError, AiSessionRunRequirements>;
39
+ createRequest(params: AiConversationRunProps): Effect.Effect<Message.Message[], AiSessionRunError, AiSessionRunRequirements>;
40
40
  }
41
41
  //# sourceMappingURL=conversation.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"conversation.d.ts","sourceRoot":"","sources":["../../../../src/conversation/conversation.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,KAAK,OAAO,MAAM,oBAAoB,CAAC;AAEnD,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAGxC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,eAAe,CAAC;AAG3C,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAExC,OAAO,EAEL,KAAK,iBAAiB,EACtB,KAAK,wBAAwB,EAC7B,KAAK,kBAAkB,EAExB,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,eAAe,EAAoB,KAAK,cAAc,EAAE,MAAM,WAAW,CAAC;AAEnF,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,kBAAkB,CAAC;CAC/B;AAED;;;GAGG;AACH,qBAAa,cAAe,SAAQ,QAAQ;IAC1C;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA2C;IAElE;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAkB;IAE3C;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAuC;gBAEpC,KAAK,EAAE,KAAK,CAAC,QAAQ,CAAC,OAAO,GAAG,cAAc,CAAC;cAMzC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;cAKtB,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAIhD,IAAW,OAAO,oBAEjB;IAED,IAAW,OAAO,yCAEjB;IAEY,UAAU,IAAI,OAAO,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;IAKtD;;OAEG;IACH,aAAa,CACX,MAAM,EAAE,uBAAuB,GAC9B,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAE,iBAAiB,EAAE,wBAAwB,CAAC;CA0ClF"}
1
+ {"version":3,"file":"conversation.d.ts","sourceRoot":"","sources":["../../../../src/conversation/conversation.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,KAAK,OAAO,MAAM,oBAAoB,CAAC;AACnD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAExC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,eAAe,CAAC;AAG3C,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAEtC,OAAO,EAEL,KAAK,iBAAiB,EACtB,KAAK,wBAAwB,EAC7B,KAAK,kBAAkB,EAExB,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,eAAe,EAAoB,KAAK,cAAc,EAAE,MAAM,WAAW,CAAC;AAEnF,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,kBAAkB,CAAC;CAC/B;AAED,MAAM,MAAM,qBAAqB,GAAG;IAClC,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,OAAO,GAAG,cAAc,CAAC,CAAC;IAC/C,OAAO,CAAC,EAAE,OAAO,CAAC,GAAG,CAAC;IACtB,QAAQ,CAAC,EAAE,QAAQ,CAAC,QAAQ,CAAC;CAC9B,CAAC;AAEF;;;GAGG;AACH,qBAAa,cAAe,SAAQ,QAAQ;IAC1C;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAkB;IAC1C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA0C;IACjE,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAc;gBAErB,OAAO,EAAE,qBAAqB;cAQxB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAI/C,IAAW,KAAK,4CAEf;IAED,IAAW,OAAO,oBAEjB;IAED,IAAW,OAAO,4BAEjB;IAEY,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;IAKrD;;OAEG;IACI,aAAa,CAClB,MAAM,EAAE,sBAAsB,GAC7B,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,iBAAiB,EAAE,wBAAwB,CAAC;CAyCjF"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=conversation.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conversation.test.d.ts","sourceRoot":"","sources":["../../../../src/conversation/conversation.test.ts"],"names":[],"mappings":""}
@@ -1,30 +1,26 @@
1
1
  import { BaseError } from '@dxos/errors';
2
2
  declare const AiModelError_base: {
3
3
  new (options?: import("@dxos/errors").BaseErrorOptions): {
4
- "__#private@#code": "AI_MODEL_ERROR";
5
- "__#private@#context": Record<string, unknown>;
6
- readonly name: "AI_MODEL_ERROR";
4
+ name: "AiModelError";
5
+ context: Record<string, unknown>;
7
6
  readonly message: string;
8
- readonly code: "AI_MODEL_ERROR";
9
- readonly _tag: "AI_MODEL_ERROR";
10
- readonly context: Record<string, unknown>;
7
+ readonly _tag: "AiModelError";
11
8
  stack?: string;
12
9
  cause?: unknown;
13
10
  };
14
- code: "AI_MODEL_ERROR";
11
+ name: "AiModelError";
15
12
  is(error: unknown): error is BaseError;
16
- wrap(options?: Omit<import("@dxos/errors").BaseErrorOptions, "cause">): (error: unknown) => {
17
- "__#private@#code": "AI_MODEL_ERROR";
18
- "__#private@#context": Record<string, unknown>;
19
- readonly name: "AI_MODEL_ERROR";
13
+ wrap(options?: Omit<import("@dxos/errors").BaseErrorOptions, "cause"> & {
14
+ ifTypeDiffers?: boolean;
15
+ }): (error: unknown) => {
16
+ name: "AiModelError";
17
+ context: Record<string, unknown>;
20
18
  readonly message: string;
21
- readonly code: "AI_MODEL_ERROR";
22
- readonly _tag: "AI_MODEL_ERROR";
23
- readonly context: Record<string, unknown>;
19
+ readonly _tag: "AiModelError";
24
20
  stack?: string;
25
21
  cause?: unknown;
26
22
  };
27
- extend<Code extends string = string>(code: Code, message?: string): any;
23
+ extend<Name extends string = string>(name: Name, message?: string): any;
28
24
  isError(error: unknown): error is Error;
29
25
  captureStackTrace(targetObject: object, constructorOpt?: Function): void;
30
26
  prepareStackTrace?: ((err: Error, stackTraces: NodeJS.CallSite[]) => any) | undefined;
@@ -37,30 +33,26 @@ export declare class AiModelError extends AiModelError_base {
37
33
  }
38
34
  declare const AiAssistantError_base: {
39
35
  new (options?: import("@dxos/errors").BaseErrorOptions): {
40
- "__#private@#code": "AI_ASSISTANT_ERROR";
41
- "__#private@#context": Record<string, unknown>;
42
- readonly name: "AI_ASSISTANT_ERROR";
36
+ name: "AiAssistantError";
37
+ context: Record<string, unknown>;
43
38
  readonly message: string;
44
- readonly code: "AI_ASSISTANT_ERROR";
45
- readonly _tag: "AI_ASSISTANT_ERROR";
46
- readonly context: Record<string, unknown>;
39
+ readonly _tag: "AiAssistantError";
47
40
  stack?: string;
48
41
  cause?: unknown;
49
42
  };
50
- code: "AI_ASSISTANT_ERROR";
43
+ name: "AiAssistantError";
51
44
  is(error: unknown): error is BaseError;
52
- wrap(options?: Omit<import("@dxos/errors").BaseErrorOptions, "cause">): (error: unknown) => {
53
- "__#private@#code": "AI_ASSISTANT_ERROR";
54
- "__#private@#context": Record<string, unknown>;
55
- readonly name: "AI_ASSISTANT_ERROR";
45
+ wrap(options?: Omit<import("@dxos/errors").BaseErrorOptions, "cause"> & {
46
+ ifTypeDiffers?: boolean;
47
+ }): (error: unknown) => {
48
+ name: "AiAssistantError";
49
+ context: Record<string, unknown>;
56
50
  readonly message: string;
57
- readonly code: "AI_ASSISTANT_ERROR";
58
- readonly _tag: "AI_ASSISTANT_ERROR";
59
- readonly context: Record<string, unknown>;
51
+ readonly _tag: "AiAssistantError";
60
52
  stack?: string;
61
53
  cause?: unknown;
62
54
  };
63
- extend<Code extends string = string>(code: Code, message?: string): any;
55
+ extend<Name extends string = string>(name: Name, message?: string): any;
64
56
  isError(error: unknown): error is Error;
65
57
  captureStackTrace(targetObject: object, constructorOpt?: Function): void;
66
58
  prepareStackTrace?: ((err: Error, stackTraces: NodeJS.CallSite[]) => any) | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../src/errors.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEzC;;GAEG;AACH,qBAAa,YAAa,SAAQ,iBAAoD;CAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEzF;;GAEG;AACH,qBAAa,gBAAiB,SAAQ,qBAA4D;CAAG"}
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../src/errors.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;;;;;;;;;;;;;qBAWutB,CAAC;;;;;;;;;;;;;;;AATjwB;;GAEG;AACH,qBAAa,YAAa,SAAQ,iBAAkD;CAAG;;;;;;;;;;;;;qBAMyqB,CAAC;;;;;;;;;;;;;;;AAJjwB;;GAEG;AACH,qBAAa,gBAAiB,SAAQ,qBAA0D;CAAG"}
@@ -1,5 +1,6 @@
1
- import { Obj } from '@dxos/echo';
1
+ import { type Entity } from '@dxos/echo';
2
2
  import { LogLevel } from '@dxos/log';
3
+ import { ContentBlock } from '@dxos/types';
3
4
  /**
4
5
  * Mercurial-style Commit.
5
6
  */
@@ -17,16 +18,18 @@ export type Commit = {
17
18
  * Models the execution graph based on a stream of events.
18
19
  */
19
20
  export declare class ExecutionGraph {
21
+ private readonly _skipBlocks;
20
22
  private _commits;
21
23
  private _branchNames;
22
24
  private _lastBlockId;
23
25
  private _toolCallCommitIds;
24
26
  private _lastCommitByBranch;
25
27
  private _pendingToolResults;
28
+ constructor(_skipBlocks?: ContentBlock.Any['_tag'][]);
26
29
  /**
27
30
  * Adds events to the graph.
28
31
  */
29
- addEvents(events: Obj.Any[]): void;
32
+ addEvents(events: Entity.Unknown[]): void;
30
33
  /**
31
34
  * Processes a message event and creates commits for its blocks.
32
35
  */
@@ -1 +1 @@
1
- {"version":3,"file":"execution-graph.d.ts","sourceRoot":"","sources":["../../../src/execution-graph.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,GAAG,EAAY,MAAM,YAAY,CAAC;AAG3C,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAIrC;;GAEG;AAEH,MAAM,MAAM,MAAM,GAAG;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,QAAQ,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,IAAI,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACjB,CAAC;AAqBF;;GAEG;AACH,qBAAa,cAAc;IAEzB,OAAO,CAAC,QAAQ,CAAgB;IAChC,OAAO,CAAC,YAAY,CAAqB;IACzC,OAAO,CAAC,YAAY,CAAqB;IAGzC,OAAO,CAAC,kBAAkB,CAA6B;IACvD,OAAO,CAAC,mBAAmB,CAA6B;IACxD,OAAO,CAAC,mBAAmB,CAA6B;IAExD;;OAEG;IACH,SAAS,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,EAAE;IAW3B;;OAEG;IACH,OAAO,CAAC,eAAe;IAqBvB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAyB3B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAyB5B;;OAEG;IACH,QAAQ,CAAC,WAAW,UAAQ,GAAG;QAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;QAAC,OAAO,EAAE,MAAM,EAAE,CAAA;KAAE;IAUxE;;OAEG;IACH,OAAO,CAAC,eAAe;IAqBvB;;OAEG;IACH,OAAO,CAAC,yBAAyB;IAmBjC;;OAEG;IACH,OAAO,CAAC,2BAA2B;IAoBnC;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAO1B;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAO9B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAIzB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAI3B;;OAEG;IACH,OAAO,CAAC,kBAAkB;CAK3B"}
1
+ {"version":3,"file":"execution-graph.d.ts","sourceRoot":"","sources":["../../../src/execution-graph.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,MAAM,EAAiB,MAAM,YAAY,CAAC;AAGxD,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,YAAY,EAAW,MAAM,aAAa,CAAC;AAKpD;;GAEG;AAEH,MAAM,MAAM,MAAM,GAAG;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,QAAQ,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,IAAI,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACjB,CAAC;AAqBF;;GAEG;AACH,qBAAa,cAAc;IAWb,OAAO,CAAC,QAAQ,CAAC,WAAW;IATxC,OAAO,CAAC,QAAQ,CAAgB;IAChC,OAAO,CAAC,YAAY,CAAqB;IACzC,OAAO,CAAC,YAAY,CAAqB;IAGzC,OAAO,CAAC,kBAAkB,CAA6B;IACvD,OAAO,CAAC,mBAAmB,CAA6B;IACxD,OAAO,CAAC,mBAAmB,CAA6B;gBAE3B,WAAW,GAAE,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,EAAgB;IAElF;;OAEG;IACH,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,OAAO,EAAE;IAWlC;;OAEG;IACH,OAAO,CAAC,eAAe;IAsBvB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAyB3B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAyB5B;;OAEG;IACH,QAAQ,CAAC,WAAW,UAAQ,GAAG;QAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;QAAC,OAAO,EAAE,MAAM,EAAE,CAAA;KAAE;IAUxE;;OAEG;IACH,OAAO,CAAC,eAAe;IAqBvB;;OAEG;IACH,OAAO,CAAC,yBAAyB;IAmBjC;;OAEG;IACH,OAAO,CAAC,2BAA2B;IAoBnC;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAO1B;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAO9B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAIzB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAI3B;;OAEG;IACH,OAAO,CAAC,kBAAkB;CAK3B"}
@@ -1 +1 @@
1
- {"version":3,"file":"extraction-llm-function.d.ts","sourceRoot":"","sources":["../../../../../src/extraction/extraction-llm-function/extraction-llm-function.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,KAAK,kBAAkB,EAAkB,MAAM,iBAAiB,CAAC;AAI1E,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAKlE,eAAO,MAAM,2BAA2B,EAAE,kBAAkB,CAAC,eAAe,EAAE,gBAAgB,CAoD5F,CAAC"}
1
+ {"version":3,"file":"extraction-llm-function.d.ts","sourceRoot":"","sources":["../../../../../src/extraction/extraction-llm-function/extraction-llm-function.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,kBAAkB,EAAkB,MAAM,iBAAiB,CAAC;AAE1E,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAElE,eAAO,MAAM,2BAA2B,EAAE,kBAAkB,CAAC,eAAe,EAAE,gBAAgB,CAqD5F,CAAC"}