@slopus/happy-agent-client 0.0.78 → 0.0.79

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/README.md CHANGED
@@ -299,3 +299,27 @@ the connected user's organizations. Desktop bootstrap includes the Cloud snapsho
299
299
  Focused agent responses and agent bootstrap include the current module-contributed slash-command
300
300
  catalog. `invokeSlashCommand` executes one through its owning module, while
301
301
  `agent.slash_commands.updated` carries complete catalog replacements discovered at turn time.
302
+
303
+ ## Reference tags
304
+
305
+ Agent text may mention Happy entities as `<happy-artifact id="…"/>`, `<happy-agent id="…"/>`,
306
+ `<happy-workspace id="…"/>`, `<happy-project id="…"/>`, or `<happy-service id="…"/>`, as API.md
307
+ specifies under "Reference tags". This package holds the one shared parser, so every client and
308
+ the daemon agree on what is a tag:
309
+
310
+ - `parseHappyReferences(markdown, { streaming? })` splits text into `text` and `reference`
311
+ segments. Tags in code spans, fenced code, or after a backslash stay text.
312
+ - `replaceHappyReferences(markdown, replace, { streaming? })` substitutes each tag in the Markdown
313
+ source before a Markdown parser sees it. Tags are never Markdown HTML, so substitute them instead
314
+ of reading HTML nodes.
315
+ - With `streaming: true`, both functions drop a trailing incomplete tag such as `<happy-arti`.
316
+ `happyReferencePartialTagLength(markdown)` reports how many characters that is.
317
+ - `renderHappyReferencesAsMarkdown(markdown, resolve)` is the plain-Markdown fallback. Each tag
318
+ becomes its escaped label, or `happyReferencePlaceholder(reference)` when `resolve` returns
319
+ nothing.
320
+ - `parseHappyReferenceTag(tag)` parses exactly one tag. `formatHappyReferenceTag(reference)` writes
321
+ the canonical one. `isKnownHappyReferenceKind(kind)` tells which kinds to resolve.
322
+ - `escapeMarkdownText(text)` is the escaping the fallback uses for labels.
323
+
324
+ Show a resolved reference as a link whose text is the live title. Indicate a busy entity on the
325
+ link. Show unknown kinds and unresolvable references as inert placeholder text.
@@ -0,0 +1,57 @@
1
+ /**
2
+ * Happy reference tags: `<happy-KIND id="…"/>` written inline in an agent's Markdown reply. A tag
3
+ * carries only identity; clients look up the entity's live title and state and show it as a link,
4
+ * and surfaces that cannot do that render the Markdown fallback instead. This one implementation
5
+ * is shared by the daemon and every client so they agree on exactly what is a tag.
6
+ *
7
+ * Tags are never Markdown HTML. A tag inside a code span or a fenced code block stays literal, a
8
+ * backslash-escaped `<` never opens one, and a malformed tag is ordinary text.
9
+ */
10
+ import { type Static } from "@sinclair/typebox";
11
+ /** The entity kinds clients resolve. Any other well-formed kind parses and renders as inert text. */
12
+ export declare const HAPPY_REFERENCE_KINDS: readonly ["artifact", "agent", "workspace", "project", "service"];
13
+ export type HappyReferenceKind = (typeof HAPPY_REFERENCE_KINDS)[number];
14
+ /** One parsed reference. `version` names an artifact version; `workspaceId` a service's workspace. */
15
+ export declare const happyReferenceSchema: import("@sinclair/typebox").TObject<{
16
+ kind: import("@sinclair/typebox").TString;
17
+ id: import("@sinclair/typebox").TString;
18
+ version: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TInteger>;
19
+ workspaceId: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
20
+ }>;
21
+ export type HappyReference = Static<typeof happyReferenceSchema>;
22
+ /** Markdown split around its references; `source` is the tag exactly as written. */
23
+ export type HappyReferenceSegment = {
24
+ type: "text";
25
+ text: string;
26
+ } | {
27
+ type: "reference";
28
+ reference: HappyReference;
29
+ source: string;
30
+ };
31
+ export interface HappyReferenceParseOptions {
32
+ /** The text is still streaming: a trailing incomplete tag such as `<happy-arti` is dropped. */
33
+ streaming?: boolean;
34
+ }
35
+ /** The longest tag, so a stray `<happy-` never makes a streaming client hide unbounded text. */
36
+ export declare const MAX_HAPPY_REFERENCE_TAG_LENGTH = 512;
37
+ export declare function isKnownHappyReferenceKind(kind: string): kind is HappyReferenceKind;
38
+ /** Splits Markdown into text and references. Adjacent text is merged and empty text omitted. */
39
+ export declare function parseHappyReferences(markdown: string, options?: HappyReferenceParseOptions): HappyReferenceSegment[];
40
+ /** Parses a string that is exactly one complete tag, with nothing around it. */
41
+ export declare function parseHappyReferenceTag(tag: string): HappyReference | undefined;
42
+ /** How many trailing characters of streaming Markdown are an incomplete tag to hide, or 0. */
43
+ export declare function happyReferencePartialTagLength(markdown: string): number;
44
+ /** Replaces every complete tag outside code with `replace`'s text. */
45
+ export declare function replaceHappyReferences(markdown: string, replace: (reference: HappyReference, source: string) => string, options?: HappyReferenceParseOptions): string;
46
+ /**
47
+ * Plain Markdown for surfaces that cannot show live references: each tag becomes the label
48
+ * `resolve` returns, such as an artifact's title, or a placeholder when it returns nothing.
49
+ */
50
+ export declare function renderHappyReferencesAsMarkdown(markdown: string, resolve: (reference: HappyReference) => string | undefined, options?: HappyReferenceParseOptions): string;
51
+ /** Words that stand in for a reference nobody can resolve, such as "an unavailable artifact". */
52
+ export declare function happyReferencePlaceholder(reference: HappyReference): string;
53
+ /** The canonical tag for a reference, such as `<happy-artifact id="…" version="2"/>`. */
54
+ export declare function formatHappyReferenceTag(reference: HappyReference): string;
55
+ /** Escapes text so Markdown shows it literally on one line, as a label in running prose. */
56
+ export declare function escapeMarkdownText(text: string): string;
57
+ //# sourceMappingURL=happyReferences.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"happyReferences.d.ts","sourceRoot":"","sources":["../sources/happyReferences.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,KAAK,MAAM,EAAQ,MAAM,mBAAmB,CAAC;AAGtD,qGAAqG;AACrG,eAAO,MAAM,qBAAqB,YAC9B,UAAU,EACV,OAAO,EACP,WAAW,EACX,SAAS,EACT,SAAS,CACH,CAAC;AACX,MAAM,MAAM,kBAAkB,GAAG,CAAC,OAAO,qBAAqB,CAAC,CAAC,MAAM,CAAC,CAAC;AAMxE,sGAAsG;AACtG,eAAO,MAAM,oBAAoB;;;;;EAQhC,CAAC;AACF,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAEjE,oFAAoF;AACpF,MAAM,MAAM,qBAAqB,GAC3B;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAC9B;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,SAAS,EAAE,cAAc,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAEvE,MAAM,WAAW,0BAA0B;IACvC,+FAA+F;IAC/F,SAAS,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,gGAAgG;AAChG,eAAO,MAAM,8BAA8B,MAAM,CAAC;AAclD,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,IAAI,kBAAkB,CAElF;AAED,gGAAgG;AAChG,wBAAgB,oBAAoB,CAChC,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,0BAA+B,GACzC,qBAAqB,EAAE,CAiBzB;AAED,gFAAgF;AAChF,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS,CAG9E;AAED,8FAA8F;AAC9F,wBAAgB,8BAA8B,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEvE;AAED,sEAAsE;AACtE,wBAAgB,sBAAsB,CAClC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,CAAC,SAAS,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,KAAK,MAAM,EAC9D,OAAO,GAAE,0BAA+B,GACzC,MAAM,CAMR;AAED;;;GAGG;AACH,wBAAgB,+BAA+B,CAC3C,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,CAAC,SAAS,EAAE,cAAc,KAAK,MAAM,GAAG,SAAS,EAC1D,OAAO,GAAE,0BAA+B,GACzC,MAAM,CAOR;AAED,iGAAiG;AACjG,wBAAgB,yBAAyB,CAAC,SAAS,EAAE,cAAc,GAAG,MAAM,CAI3E;AAED,yFAAyF;AACzF,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,cAAc,GAAG,MAAM,CASzE;AAED,4FAA4F;AAC5F,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEvD"}
@@ -0,0 +1,320 @@
1
+ /**
2
+ * Happy reference tags: `<happy-KIND id="…"/>` written inline in an agent's Markdown reply. A tag
3
+ * carries only identity; clients look up the entity's live title and state and show it as a link,
4
+ * and surfaces that cannot do that render the Markdown fallback instead. This one implementation
5
+ * is shared by the daemon and every client so they agree on exactly what is a tag.
6
+ *
7
+ * Tags are never Markdown HTML. A tag inside a code span or a fenced code block stays literal, a
8
+ * backslash-escaped `<` never opens one, and a malformed tag is ordinary text.
9
+ */
10
+ import { Type } from "@sinclair/typebox";
11
+ import { Value } from "@sinclair/typebox/value";
12
+ /** The entity kinds clients resolve. Any other well-formed kind parses and renders as inert text. */
13
+ export const HAPPY_REFERENCE_KINDS = [
14
+ "artifact",
15
+ "agent",
16
+ "workspace",
17
+ "project",
18
+ "service",
19
+ ];
20
+ const KIND_PATTERN = "[a-z][a-z0-9]*(?:-[a-z0-9]+)*";
21
+ const ID_PATTERN = "[A-Za-z0-9_-]{1,128}";
22
+ const VERSION_PATTERN = "[1-9][0-9]{0,8}";
23
+ /** One parsed reference. `version` names an artifact version; `workspaceId` a service's workspace. */
24
+ export const happyReferenceSchema = Type.Object({
25
+ kind: Type.String({ pattern: `^${KIND_PATTERN}$` }),
26
+ id: Type.String({ pattern: `^${ID_PATTERN}$` }),
27
+ version: Type.Optional(Type.Integer({ minimum: 1, maximum: 999_999_999 })),
28
+ workspaceId: Type.Optional(Type.String({ pattern: `^${ID_PATTERN}$` })),
29
+ }, { additionalProperties: false });
30
+ /** The longest tag, so a stray `<happy-` never makes a streaming client hide unbounded text. */
31
+ export const MAX_HAPPY_REFERENCE_TAG_LENGTH = 512;
32
+ const MAX_ATTRIBUTE_VALUE_LENGTH = 256;
33
+ const TAG_OPEN = "<happy-";
34
+ const TAG = new RegExp(`<happy-(${KIND_PATTERN})((?:[ \\t]+[a-z][a-z0-9-]*="[^"<>\\r\\n]{0,${String(MAX_ATTRIBUTE_VALUE_LENGTH)}}")+)[ \\t]*/>`, "y");
35
+ const ATTRIBUTE = /[ \t]+([a-z][a-z0-9-]*)="([^"<>\r\n]*)"/g;
36
+ const ID = new RegExp(`^${ID_PATTERN}$`);
37
+ const VERSION = new RegExp(`^${VERSION_PATTERN}$`);
38
+ const FENCE_OPEN = /^[ \t]*(?:>[ \t]?)*[ \t]*(`{3,}|~{3,})(.*)$/;
39
+ const BLANK_LINE = /^[ \t\r]*$/;
40
+ export function isKnownHappyReferenceKind(kind) {
41
+ return HAPPY_REFERENCE_KINDS.includes(kind);
42
+ }
43
+ /** Splits Markdown into text and references. Adjacent text is merged and empty text omitted. */
44
+ export function parseHappyReferences(markdown, options = {}) {
45
+ const { tags, end } = scan(markdown, options.streaming === true);
46
+ const segments = [];
47
+ let position = 0;
48
+ for (const tag of tags) {
49
+ if (tag.start > position) {
50
+ segments.push({ type: "text", text: markdown.slice(position, tag.start) });
51
+ }
52
+ segments.push({
53
+ type: "reference",
54
+ reference: tag.reference,
55
+ source: markdown.slice(tag.start, tag.end),
56
+ });
57
+ position = tag.end;
58
+ }
59
+ if (end > position)
60
+ segments.push({ type: "text", text: markdown.slice(position, end) });
61
+ return segments;
62
+ }
63
+ /** Parses a string that is exactly one complete tag, with nothing around it. */
64
+ export function parseHappyReferenceTag(tag) {
65
+ const match = matchTag(tag, 0);
66
+ return match !== undefined && match.end === tag.length ? match.reference : undefined;
67
+ }
68
+ /** How many trailing characters of streaming Markdown are an incomplete tag to hide, or 0. */
69
+ export function happyReferencePartialTagLength(markdown) {
70
+ return markdown.length - scan(markdown, true).end;
71
+ }
72
+ /** Replaces every complete tag outside code with `replace`'s text. */
73
+ export function replaceHappyReferences(markdown, replace, options = {}) {
74
+ return parseHappyReferences(markdown, options)
75
+ .map((segment) => segment.type === "text" ? segment.text : replace(segment.reference, segment.source))
76
+ .join("");
77
+ }
78
+ /**
79
+ * Plain Markdown for surfaces that cannot show live references: each tag becomes the label
80
+ * `resolve` returns, such as an artifact's title, or a placeholder when it returns nothing.
81
+ */
82
+ export function renderHappyReferencesAsMarkdown(markdown, resolve, options = {}) {
83
+ return replaceHappyReferences(markdown, (reference) => escapeMarkdownText(resolve(reference) ?? happyReferencePlaceholder(reference)), options);
84
+ }
85
+ /** Words that stand in for a reference nobody can resolve, such as "an unavailable artifact". */
86
+ export function happyReferencePlaceholder(reference) {
87
+ return isKnownHappyReferenceKind(reference.kind)
88
+ ? `an unavailable ${reference.kind}`
89
+ : "an unavailable reference";
90
+ }
91
+ /** The canonical tag for a reference, such as `<happy-artifact id="…" version="2"/>`. */
92
+ export function formatHappyReferenceTag(reference) {
93
+ if (!Value.Check(happyReferenceSchema, reference)) {
94
+ throw new TypeError("The Happy reference is invalid.");
95
+ }
96
+ const version = reference.version === undefined ? "" : ` version="${String(reference.version)}"`;
97
+ const workspace = reference.workspaceId === undefined ? "" : ` workspace="${reference.workspaceId}"`;
98
+ return `<happy-${reference.kind} id="${reference.id}"${version}${workspace}/>`;
99
+ }
100
+ /** Escapes text so Markdown shows it literally on one line, as a label in running prose. */
101
+ export function escapeMarkdownText(text) {
102
+ return text.replace(/\s*[\r\n]+\s*/g, " ").replace(/[\\`*_[\]<>|~]/g, "\\$&");
103
+ }
104
+ /** The complete tags outside code, and where the text ends once a streaming partial is dropped. */
105
+ function scan(markdown, streaming) {
106
+ const tags = [];
107
+ for (const block of textBlocks(markdown)) {
108
+ const last = block.end === markdown.length;
109
+ let index = block.start;
110
+ while (index < block.end) {
111
+ const character = markdown[index];
112
+ if (character === "\\") {
113
+ index += 2;
114
+ }
115
+ else if (character === "`") {
116
+ index = skipCodeSpan(markdown, index, block.end, streaming && last);
117
+ }
118
+ else if (character === "<") {
119
+ const tag = matchTag(markdown, index);
120
+ if (tag !== undefined) {
121
+ tags.push(tag);
122
+ index = tag.end;
123
+ }
124
+ else if (streaming && last && isTagPrefix(markdown.slice(index))) {
125
+ return { tags, end: index };
126
+ }
127
+ else {
128
+ index += 1;
129
+ }
130
+ }
131
+ else {
132
+ index += 1;
133
+ }
134
+ }
135
+ }
136
+ return { tags, end: markdown.length };
137
+ }
138
+ /**
139
+ * The runs of Markdown that are neither fenced code nor blank lines, each including its line
140
+ * endings. A code span cannot cross a blank line, so each run bounds the spans inside it. A fence
141
+ * without a closing line runs to the end, which is also how a streaming fence reads.
142
+ */
143
+ function textBlocks(markdown) {
144
+ const blocks = [];
145
+ let blockStart;
146
+ let fence;
147
+ let lineStart = 0;
148
+ while (lineStart < markdown.length) {
149
+ const newline = markdown.indexOf("\n", lineStart);
150
+ const lineEnd = newline === -1 ? markdown.length : newline + 1;
151
+ const line = markdown.slice(lineStart, newline === -1 ? markdown.length : newline);
152
+ if (fence !== undefined) {
153
+ if (isFenceClose(line, fence))
154
+ fence = undefined;
155
+ }
156
+ else {
157
+ const open = FENCE_OPEN.exec(line);
158
+ const marker = open?.[1];
159
+ const info = open?.[2] ?? "";
160
+ if (marker !== undefined && !(marker.startsWith("`") && info.includes("`"))) {
161
+ if (blockStart !== undefined)
162
+ blocks.push({ start: blockStart, end: lineStart });
163
+ blockStart = undefined;
164
+ fence = { marker: marker.charAt(0), length: marker.length };
165
+ }
166
+ else if (BLANK_LINE.test(line)) {
167
+ if (blockStart !== undefined)
168
+ blocks.push({ start: blockStart, end: lineStart });
169
+ blockStart = undefined;
170
+ }
171
+ else {
172
+ blockStart ??= lineStart;
173
+ }
174
+ }
175
+ lineStart = lineEnd;
176
+ }
177
+ if (blockStart !== undefined)
178
+ blocks.push({ start: blockStart, end: markdown.length });
179
+ return blocks;
180
+ }
181
+ function isFenceClose(line, fence) {
182
+ const close = /^[ \t]*(?:>[ \t]?)*[ \t]*(`+|~+)[ \t\r]*$/.exec(line)?.[1];
183
+ return close !== undefined && close.charAt(0) === fence.marker && close.length >= fence.length;
184
+ }
185
+ /**
186
+ * Skips a code span that opens at `start`, returning the index after it. Backticks with no
187
+ * closing run of the same length are literal, except at the end of streaming text, where the
188
+ * closing run may still arrive and everything after the opening run reads as code.
189
+ */
190
+ function skipCodeSpan(markdown, start, end, open) {
191
+ const length = runLength(markdown, start, "`");
192
+ let index = start + length;
193
+ while (index < end) {
194
+ const next = markdown.indexOf("`", index);
195
+ if (next === -1 || next >= end)
196
+ break;
197
+ const closing = runLength(markdown, next, "`");
198
+ if (closing === length)
199
+ return next + closing;
200
+ index = next + closing;
201
+ }
202
+ return open ? end : start + length;
203
+ }
204
+ function runLength(text, start, character) {
205
+ let index = start;
206
+ while (text[index] === character)
207
+ index += 1;
208
+ return index - start;
209
+ }
210
+ function matchTag(text, start) {
211
+ TAG.lastIndex = start;
212
+ const match = TAG.exec(text);
213
+ if (match === null || match[0].length > MAX_HAPPY_REFERENCE_TAG_LENGTH)
214
+ return undefined;
215
+ const kind = match[1] ?? "";
216
+ const attributes = new Map();
217
+ for (const [, name = "", value = ""] of (match[2] ?? "").matchAll(ATTRIBUTE)) {
218
+ if (attributes.has(name))
219
+ return undefined;
220
+ attributes.set(name, value);
221
+ }
222
+ const id = attributes.get("id");
223
+ const version = attributes.get("version");
224
+ const workspaceId = attributes.get("workspace");
225
+ if (id === undefined || !ID.test(id))
226
+ return undefined;
227
+ if (version !== undefined && !VERSION.test(version))
228
+ return undefined;
229
+ if (workspaceId !== undefined && !ID.test(workspaceId))
230
+ return undefined;
231
+ return {
232
+ start,
233
+ end: start + match[0].length,
234
+ reference: {
235
+ kind,
236
+ id,
237
+ ...(version === undefined ? {} : { version: Number(version) }),
238
+ ...(workspaceId === undefined ? {} : { workspaceId }),
239
+ },
240
+ };
241
+ }
242
+ /** Whether `text`, which starts at a `<`, could still grow into a complete tag. */
243
+ function isTagPrefix(text) {
244
+ if (text.length >= MAX_HAPPY_REFERENCE_TAG_LENGTH)
245
+ return false;
246
+ if (text.length <= TAG_OPEN.length)
247
+ return TAG_OPEN.startsWith(text);
248
+ if (!text.startsWith(TAG_OPEN))
249
+ return false;
250
+ let state = "kindStart";
251
+ let attributeSeen = false;
252
+ let valueLength = 0;
253
+ for (const character of text.slice(TAG_OPEN.length)) {
254
+ const lower = character >= "a" && character <= "z";
255
+ const digit = character >= "0" && character <= "9";
256
+ const space = character === " " || character === "\t";
257
+ switch (state) {
258
+ case "kindStart":
259
+ case "kindDash":
260
+ if (!(lower || (digit && state === "kindDash")))
261
+ return false;
262
+ state = "kind";
263
+ break;
264
+ case "kind":
265
+ if (character === "-")
266
+ state = "kindDash";
267
+ else if (space)
268
+ state = "space";
269
+ else if (!lower && !digit)
270
+ return false;
271
+ break;
272
+ case "space":
273
+ if (lower)
274
+ state = "name";
275
+ else if (character === "/" && attributeSeen)
276
+ state = "slash";
277
+ else if (!space)
278
+ return false;
279
+ break;
280
+ case "name":
281
+ if (character === "=")
282
+ state = "equals";
283
+ else if (!lower && !digit && character !== "-")
284
+ return false;
285
+ break;
286
+ case "equals":
287
+ if (character !== '"')
288
+ return false;
289
+ state = "value";
290
+ valueLength = 0;
291
+ break;
292
+ case "value":
293
+ if (character === '"') {
294
+ attributeSeen = true;
295
+ state = "afterValue";
296
+ break;
297
+ }
298
+ if ("<>\r\n".includes(character))
299
+ return false;
300
+ valueLength += 1;
301
+ if (valueLength > MAX_ATTRIBUTE_VALUE_LENGTH)
302
+ return false;
303
+ break;
304
+ case "afterValue":
305
+ // A closed value is followed by whitespace or `/>`, never directly by a name.
306
+ if (space)
307
+ state = "space";
308
+ else if (character === "/")
309
+ state = "slash";
310
+ else
311
+ return false;
312
+ break;
313
+ case "slash":
314
+ // `/>` completes the tag, so whatever is left is not an incomplete one.
315
+ return false;
316
+ }
317
+ }
318
+ return true;
319
+ }
320
+ //# sourceMappingURL=happyReferences.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"happyReferences.js","sourceRoot":"","sources":["../sources/happyReferences.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -16,6 +16,7 @@ export type { QueryParameters, QueryValue } from "./endpointUrl.js";
16
16
  export { applyMessageDelta } from "./applyMessageDelta.js";
17
17
  export type { MessageDeltaApplication } from "./applyMessageDelta.js";
18
18
  export * from "./requestOptions.js";
19
+ export * from "./happyReferences.js";
19
20
  export * from "./protocol/agents.js";
20
21
  export * from "./protocol/artifacts.js";
21
22
  export * from "./protocol/authentication.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../sources/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,YAAY,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AACrE,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,YAAY,EACR,mBAAmB,EACnB,yBAAyB,EACzB,uBAAuB,EACvB,0BAA0B,GAC7B,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EACR,sBAAsB,EACtB,sBAAsB,EACtB,sBAAsB,EACtB,iBAAiB,GACpB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,YAAY,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,wBAAwB,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACjF,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EACH,gBAAgB,EAChB,mBAAmB,EACnB,sBAAsB,EACtB,KAAK,eAAe,EACpB,KAAK,mBAAmB,EACxB,KAAK,WAAW,GACnB,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AACnD,YAAY,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAC;AAC/E,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,YAAY,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,YAAY,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACtE,cAAc,qBAAqB,CAAC;AAEpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,yBAAyB,CAAC;AACxC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,yBAAyB,CAAC;AACxC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,oBAAoB,CAAC;AACnC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC;AACrC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,yBAAyB,CAAC;AACxC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,0BAA0B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../sources/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,YAAY,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AACrE,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,YAAY,EACR,mBAAmB,EACnB,yBAAyB,EACzB,uBAAuB,EACvB,0BAA0B,GAC7B,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EACR,sBAAsB,EACtB,sBAAsB,EACtB,sBAAsB,EACtB,iBAAiB,GACpB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,YAAY,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,wBAAwB,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACjF,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EACH,gBAAgB,EAChB,mBAAmB,EACnB,sBAAsB,EACtB,KAAK,eAAe,EACpB,KAAK,mBAAmB,EACxB,KAAK,WAAW,GACnB,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AACnD,YAAY,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAC;AAC/E,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,YAAY,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,YAAY,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACtE,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AAErC,cAAc,sBAAsB,CAAC;AACrC,cAAc,yBAAyB,CAAC;AACxC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,yBAAyB,CAAC;AACxC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,oBAAoB,CAAC;AACnC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC;AACrC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,yBAAyB,CAAC;AACxC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,0BAA0B,CAAC"}
package/dist/index.js CHANGED
@@ -8,6 +8,7 @@ export { beginOAuthSignIn, completeOAuthSignIn, refreshOAuthCredential, } from "
8
8
  export { endpointUrl } from "./endpointUrl.js";
9
9
  export { applyMessageDelta } from "./applyMessageDelta.js";
10
10
  export * from "./requestOptions.js";
11
+ export * from "./happyReferences.js";
11
12
  export * from "./protocol/agents.js";
12
13
  export * from "./protocol/artifacts.js";
13
14
  export * from "./protocol/authentication.js";
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../sources/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEzD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAajD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAE7D,OAAO,EAAE,wBAAwB,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACjF,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EACH,gBAAgB,EAChB,mBAAmB,EACnB,sBAAsB,GAIzB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAE3D,cAAc,qBAAqB,CAAC;AAEpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,yBAAyB,CAAC;AACxC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,yBAAyB,CAAC;AACxC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,oBAAoB,CAAC;AACnC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC;AACrC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,yBAAyB,CAAC;AACxC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,0BAA0B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../sources/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEzD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAajD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAE7D,OAAO,EAAE,wBAAwB,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACjF,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EACH,gBAAgB,EAChB,mBAAmB,EACnB,sBAAsB,GAIzB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAE3D,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AAErC,cAAc,sBAAsB,CAAC;AACrC,cAAc,yBAAyB,CAAC;AACxC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,yBAAyB,CAAC;AACxC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,oBAAoB,CAAC;AACnC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC;AACrC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,yBAAyB,CAAC;AACxC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,0BAA0B,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@slopus/happy-agent-client",
3
- "version": "0.0.78",
3
+ "version": "0.0.79",
4
4
  "description": "Typed client for the Happy agent HTTP API.",
5
5
  "license": "MIT",
6
6
  "repository": {