@aui.io/apollo 0.1.91 → 0.1.93

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 (47) hide show
  1. package/node_modules/@aui.io/apollo-cli/dist/src/commands/bundles.js +2 -2
  2. package/node_modules/@aui.io/apollo-cli/dist/src/commands/bundles.js.map +1 -1
  3. package/node_modules/@aui.io/apollo-cli/dist/src/commands/confirm.d.ts +5 -5
  4. package/node_modules/@aui.io/apollo-cli/dist/src/commands/confirm.js +8 -8
  5. package/node_modules/@aui.io/apollo-cli/dist/src/commands/confirm.js.map +1 -1
  6. package/node_modules/@aui.io/apollo-cli/dist/src/commands/operate.d.ts +2 -0
  7. package/node_modules/@aui.io/apollo-cli/dist/src/commands/operate.js +460 -40
  8. package/node_modules/@aui.io/apollo-cli/dist/src/commands/operate.js.map +1 -1
  9. package/node_modules/@aui.io/apollo-cli/dist/src/index.js +3 -0
  10. package/node_modules/@aui.io/apollo-cli/dist/src/index.js.map +1 -1
  11. package/node_modules/@aui.io/apollo-cli/dist/src/output/broken-pipe.d.ts +8 -0
  12. package/node_modules/@aui.io/apollo-cli/dist/src/output/broken-pipe.js +20 -0
  13. package/node_modules/@aui.io/apollo-cli/dist/src/output/broken-pipe.js.map +1 -0
  14. package/node_modules/@aui.io/apollo-cli/dist/src/output/live-chat.d.ts +57 -0
  15. package/node_modules/@aui.io/apollo-cli/dist/src/output/live-chat.js +178 -0
  16. package/node_modules/@aui.io/apollo-cli/dist/src/output/live-chat.js.map +1 -0
  17. package/node_modules/@aui.io/apollo-cli/package.json +3 -3
  18. package/node_modules/@aui.io/apollo-core/dist/src/api/client-types.d.ts +15 -1
  19. package/node_modules/@aui.io/apollo-core/dist/src/api/jwt.d.ts +6 -0
  20. package/node_modules/@aui.io/apollo-core/dist/src/api/jwt.js +18 -0
  21. package/node_modules/@aui.io/apollo-core/dist/src/api/jwt.js.map +1 -0
  22. package/node_modules/@aui.io/apollo-core/dist/src/api/runtime-api.d.ts +116 -10
  23. package/node_modules/@aui.io/apollo-core/dist/src/api/runtime-api.js +47 -4
  24. package/node_modules/@aui.io/apollo-core/dist/src/api/runtime-api.js.map +1 -1
  25. package/node_modules/@aui.io/apollo-core/dist/src/api/transport.d.ts +33 -1
  26. package/node_modules/@aui.io/apollo-core/dist/src/api/transport.js +246 -22
  27. package/node_modules/@aui.io/apollo-core/dist/src/api/transport.js.map +1 -1
  28. package/node_modules/@aui.io/apollo-core/dist/src/errors/index.d.ts +4 -0
  29. package/node_modules/@aui.io/apollo-core/dist/src/errors/index.js +4 -0
  30. package/node_modules/@aui.io/apollo-core/dist/src/errors/index.js.map +1 -1
  31. package/node_modules/@aui.io/apollo-core/dist/src/output/index.d.ts +11 -2
  32. package/node_modules/@aui.io/apollo-core/dist/src/output/index.js +8 -4
  33. package/node_modules/@aui.io/apollo-core/dist/src/output/index.js.map +1 -1
  34. package/node_modules/@aui.io/apollo-core/dist/src/output/trace-lines.d.ts +28 -0
  35. package/node_modules/@aui.io/apollo-core/dist/src/output/trace-lines.js +140 -0
  36. package/node_modules/@aui.io/apollo-core/dist/src/output/trace-lines.js.map +1 -0
  37. package/node_modules/@aui.io/apollo-core/dist/src/services/chat-script.d.ts +39 -0
  38. package/node_modules/@aui.io/apollo-core/dist/src/services/chat-script.js +150 -0
  39. package/node_modules/@aui.io/apollo-core/dist/src/services/chat-script.js.map +1 -0
  40. package/node_modules/@aui.io/apollo-core/dist/src/services/clients.js +3 -10
  41. package/node_modules/@aui.io/apollo-core/dist/src/services/clients.js.map +1 -1
  42. package/node_modules/@aui.io/apollo-core/dist/src/services/messaging.d.ts +39 -3
  43. package/node_modules/@aui.io/apollo-core/dist/src/services/messaging.js +159 -23
  44. package/node_modules/@aui.io/apollo-core/dist/src/services/messaging.js.map +1 -1
  45. package/node_modules/@aui.io/apollo-core/package.json +1 -1
  46. package/node_modules/@aui.io/apollo-tui/package.json +2 -2
  47. package/package.json +4 -4
@@ -8,6 +8,11 @@ export interface OutputOptions {
8
8
  export interface SuccessEnvelope {
9
9
  success: true;
10
10
  data: unknown;
11
+ /** Where a keyset listing continues (`thread list`). Additive, like `update`. */
12
+ page?: {
13
+ has_next: boolean;
14
+ next_cursor?: string | null;
15
+ };
11
16
  /** A newer console is published. Additive: absent unless one is known,
12
17
  * so consumers that never look for it see the envelope they always did. */
13
18
  update?: UpdateNotice;
@@ -25,7 +30,7 @@ export interface ErrorEnvelope {
25
30
  * "upgrade", so the notice rides the error envelope too. */
26
31
  update?: UpdateNotice;
27
32
  }
28
- export declare function successEnvelope(data: unknown, update?: UpdateNotice): SuccessEnvelope;
33
+ export declare function successEnvelope(data: unknown, update?: UpdateNotice, page?: SuccessEnvelope["page"]): SuccessEnvelope;
29
34
  export declare function errorEnvelope(error: CliError, update?: UpdateNotice): ErrorEnvelope;
30
35
  /** A user as people are named: "you" for `me`, else their email, else "someone" — never an id. */
31
36
  export declare function personName(id: string | null | undefined, email: string | null | undefined, me: string | undefined): string;
@@ -40,7 +45,11 @@ export declare class Output {
40
45
  * `upgrade` command does that, being the update surface itself. */
41
46
  setUpdateNotice(update: UpdateNotice | undefined): void;
42
47
  get updateNotice(): UpdateNotice | undefined;
43
- result(data: unknown, renderHuman: (value: unknown) => string): void;
48
+ result(data: unknown, renderHuman: (value: unknown) => string, extra?: {
49
+ page?: SuccessEnvelope["page"];
50
+ }): void;
51
+ /** One JSON line straight to stdout — a frame of a streamed result (`--events`). */
52
+ jsonLine(value: unknown): void;
44
53
  error(error: CliError): void;
45
54
  /** A non-fatal caution — the command went through, but something the user
46
55
  * should know about did not hold. Stderr in every mode (stdout stays the
@@ -1,6 +1,6 @@
1
1
  import pc from "picocolors";
2
- export function successEnvelope(data, update) {
3
- return { success: true, data, ...(update === undefined ? {} : { update }) };
2
+ export function successEnvelope(data, update, page) {
3
+ return { success: true, data, ...(page === undefined ? {} : { page }), ...(update === undefined ? {} : { update }) };
4
4
  }
5
5
  export function errorEnvelope(error, update) {
6
6
  return {
@@ -46,12 +46,16 @@ export class Output {
46
46
  get updateNotice() {
47
47
  return this.update;
48
48
  }
49
- result(data, renderHuman) {
49
+ result(data, renderHuman, extra = {}) {
50
50
  const value = this.options.json
51
- ? JSON.stringify(successEnvelope(data, this.update))
51
+ ? JSON.stringify(successEnvelope(data, this.update, extra.page))
52
52
  : renderHuman(data);
53
53
  this.stdout.write(`${value}\n`);
54
54
  }
55
+ /** One JSON line straight to stdout — a frame of a streamed result (`--events`). */
56
+ jsonLine(value) {
57
+ this.stdout.write(`${JSON.stringify(value)}\n`);
58
+ }
55
59
  error(error) {
56
60
  const value = this.options.json
57
61
  ? JSON.stringify(errorEnvelope(error, this.update))
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/output/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/output/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * One readable line per trace entry — what a live view prints while a turn
3
+ * streams, and what `chat --trace` prints after it. The words are the trace's
4
+ * own (the engine streams the same sections the sealed trace holds); this
5
+ * only picks the fields a reader recognizes and keeps each line short.
6
+ */
7
+ /** The plain word each streamed trace section reads as. */
8
+ export declare const TRACE_SECTION_LABELS: Readonly<Record<string, string>>;
9
+ /**
10
+ * The turn's outcome fields a summary names after its steps. Each is set only
11
+ * on the turns a test exists to catch — a policy refused, a capability was
12
+ * blocked, a change waits on the caller's go-ahead, the engine failed — and
13
+ * empty on an ordinary turn.
14
+ */
15
+ export declare const TURN_OUTCOME_LABELS: Readonly<Record<string, string>>;
16
+ export declare function traceSectionLabel(section: string): string;
17
+ /** One outcome line of a sealed trace: which field, what it says, and whether it is a failure. */
18
+ export interface TurnOutcomeLine {
19
+ field: string;
20
+ text: string;
21
+ failed: boolean;
22
+ }
23
+ /** A sealed trace's outcome lines, in reading order — none on an ordinary turn. */
24
+ export declare function describeTurnOutcome(sealed: Record<string, unknown>): TurnOutcomeLine[];
25
+ /** One entry of one section, as a single line. */
26
+ export declare function describeTraceEntry(section: string, entry: unknown): string;
27
+ /** A value on one line, at most MAX_VALUE_CHARS long. */
28
+ export declare function short(value: unknown): string;
@@ -0,0 +1,140 @@
1
+ /**
2
+ * One readable line per trace entry — what a live view prints while a turn
3
+ * streams, and what `chat --trace` prints after it. The words are the trace's
4
+ * own (the engine streams the same sections the sealed trace holds); this
5
+ * only picks the fields a reader recognizes and keeps each line short.
6
+ */
7
+ /** The plain word each streamed trace section reads as. */
8
+ export const TRACE_SECTION_LABELS = {
9
+ understood: "understood",
10
+ intents: "intent",
11
+ asking: "asking",
12
+ ambiguous: "unclear",
13
+ confirmations: "confirming",
14
+ needed_first: "needs first",
15
+ plan: "plan",
16
+ still_owed: "still owed",
17
+ decided: "decided",
18
+ computed: "computed",
19
+ sources: "looked up",
20
+ learned: "learned",
21
+ did: "did",
22
+ wrote: "wrote",
23
+ transitioned: "moved to",
24
+ checks: "checked",
25
+ };
26
+ /**
27
+ * The turn's outcome fields a summary names after its steps. Each is set only
28
+ * on the turns a test exists to catch — a policy refused, a capability was
29
+ * blocked, a change waits on the caller's go-ahead, the engine failed — and
30
+ * empty on an ordinary turn.
31
+ */
32
+ export const TURN_OUTCOME_LABELS = {
33
+ refused_by: "refused by",
34
+ blocked: "blocked",
35
+ awaiting_authorisation: "waiting on",
36
+ error: "error",
37
+ };
38
+ const MAX_VALUE_CHARS = 80;
39
+ export function traceSectionLabel(section) {
40
+ return TRACE_SECTION_LABELS[section] ?? TURN_OUTCOME_LABELS[section] ?? section.replaceAll("_", " ");
41
+ }
42
+ /** A sealed trace's outcome lines, in reading order — none on an ordinary turn. */
43
+ export function describeTurnOutcome(sealed) {
44
+ const lines = [];
45
+ if (typeof sealed.refused_by === "string" && sealed.refused_by) {
46
+ lines.push({ field: "refused_by", text: sealed.refused_by, failed: false });
47
+ }
48
+ if (sealed.blocked !== null && typeof sealed.blocked === "object") {
49
+ const blocked = sealed.blocked;
50
+ const what = typeof blocked.capability === "string" && blocked.capability ? blocked.capability : "?";
51
+ const kind = typeof blocked.class === "string" && blocked.class ? ` (${blocked.class})` : "";
52
+ const because = blocked.because ? ` — ${short(blocked.because)}` : "";
53
+ lines.push({ field: "blocked", text: `${what}${kind}${because}`, failed: false });
54
+ }
55
+ if (typeof sealed.awaiting_authorisation === "string" && sealed.awaiting_authorisation) {
56
+ lines.push({ field: "awaiting_authorisation", text: `your go-ahead for ${sealed.awaiting_authorisation}`, failed: false });
57
+ }
58
+ if (typeof sealed.error === "string" && sealed.error) {
59
+ lines.push({ field: "error", text: short(sealed.error), failed: true });
60
+ }
61
+ return lines;
62
+ }
63
+ /** One entry of one section, as a single line. */
64
+ export function describeTraceEntry(section, entry) {
65
+ if (typeof entry === "string")
66
+ return entry;
67
+ if (entry === null || typeof entry !== "object")
68
+ return short(entry);
69
+ const e = entry;
70
+ switch (section) {
71
+ case "understood":
72
+ case "learned":
73
+ return `${name(e, ["fact", "name"])} = ${short(e.value)}`;
74
+ case "computed":
75
+ return `${name(e, ["fact", "name"])} = ${short(e.output ?? e.value)}`;
76
+ case "intents":
77
+ return `${name(e, ["capability", "intent", "name"])}${e.outcome ? ` (${text(e.outcome)})` : ""}`;
78
+ case "checks":
79
+ return `${e.passed === false ? "✗" : "✓"} ${name(e, ["check", "name"])}${e.note ? ` — ${short(e.note)}` : ""}`;
80
+ case "sources":
81
+ return `${name(e, ["source", "name"])}${askedFor(e.asked_for)}${rows(e)}`;
82
+ case "transitioned":
83
+ return name(e, ["to", "state", "name"]);
84
+ default:
85
+ return named(e);
86
+ }
87
+ }
88
+ function askedFor(value) {
89
+ if (value === null || typeof value !== "object")
90
+ return "";
91
+ const pairs = Object.entries(value).map(([key, v]) => `${key}=${short(v)}`);
92
+ return pairs.length ? ` (${pairs.join(", ")})` : "";
93
+ }
94
+ function rows(e) {
95
+ const count = Array.isArray(e.rows) ? e.rows.length : typeof e.row_count === "number" ? e.row_count : undefined;
96
+ return count === undefined ? "" : ` → ${count} row${count === 1 ? "" : "s"}`;
97
+ }
98
+ /** The first field a reader would name the entry by, else a compact preview. */
99
+ function named(e) {
100
+ for (const key of ["capability", "policy", "situation", "fact", "source", "name", "id", "title", "text", "summary"]) {
101
+ const value = e[key];
102
+ if (typeof value === "string" && value) {
103
+ const outcome = e.outcome ?? e.status ?? e.value;
104
+ return outcome === undefined || outcome === null || outcome === "" ? value : `${value} (${short(outcome)})`;
105
+ }
106
+ }
107
+ return short(e);
108
+ }
109
+ function name(e, keys) {
110
+ for (const key of keys) {
111
+ const value = e[key];
112
+ if (typeof value === "string" && value)
113
+ return value;
114
+ }
115
+ return "?";
116
+ }
117
+ function text(value) {
118
+ return typeof value === "string" ? value : short(value);
119
+ }
120
+ /** A value on one line, at most MAX_VALUE_CHARS long. */
121
+ export function short(value) {
122
+ let rendered;
123
+ if (typeof value === "string")
124
+ rendered = value;
125
+ else if (value === undefined)
126
+ rendered = "";
127
+ else if (typeof value === "function" || typeof value === "symbol")
128
+ rendered = typeof value;
129
+ else {
130
+ try {
131
+ rendered = JSON.stringify(value);
132
+ }
133
+ catch {
134
+ rendered = "(unprintable)";
135
+ }
136
+ }
137
+ rendered = rendered.replace(/\s+/g, " ").trim();
138
+ return rendered.length > MAX_VALUE_CHARS ? `${rendered.slice(0, MAX_VALUE_CHARS - 1)}…` : rendered;
139
+ }
140
+ //# sourceMappingURL=trace-lines.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trace-lines.js","sourceRoot":"","sources":["../../../src/output/trace-lines.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,39 @@
1
+ import type { Message } from "../api/runtime-api.js";
2
+ /** The most turns one scripted conversation sends — from stdin (`chat -`) or a file (`chat --script`). */
3
+ export declare const MAX_SCRIPT_TURNS = 200;
4
+ /**
5
+ * What one turn must show, read off the sealed trace that rides its reply.
6
+ * Every key is optional; those given must all hold.
7
+ */
8
+ export interface TurnExpectation {
9
+ /** Capabilities that ran (each of them), or "none" for a turn that ran none. */
10
+ did?: string[] | "none";
11
+ /** Capabilities the agent took as the caller's intent (each of them). */
12
+ intent?: string[];
13
+ /** The policy that refused the turn, or "none" for a turn nothing refused. */
14
+ refused_by?: string;
15
+ /** "pass": every check on the turn passed. */
16
+ checks?: "pass";
17
+ /** Phrases the reply contains, ignoring case. */
18
+ says?: string[];
19
+ /** Phrases the reply never contains, ignoring case. */
20
+ not_says?: string[];
21
+ }
22
+ export interface ScriptTurn {
23
+ message: string;
24
+ expect?: TurnExpectation;
25
+ }
26
+ export interface ExpectationResult {
27
+ /** The expectation as written: `did answer-rates`. */
28
+ expect: string;
29
+ met: boolean;
30
+ /** What the turn showed instead, when it was not met. */
31
+ got?: string;
32
+ }
33
+ export declare const EXPECTATION_KEYS: readonly ["did", "intent", "refused_by", "checks", "says", "not_says"];
34
+ /** A conversation script from a YAML (or JSON) file. */
35
+ export declare function loadChatScript(path: string): Promise<ScriptTurn[]>;
36
+ /** Turns from a parsed script: `{turns: [...]}` or the list itself; a turn is `message` plus an optional `expect`. */
37
+ export declare function parseChatScript(document: unknown, source?: string): ScriptTurn[];
38
+ /** Each expectation of a turn against what its reply and sealed trace show. */
39
+ export declare function checkTurn(expectation: TurnExpectation, message: Message): ExpectationResult[];
@@ -0,0 +1,150 @@
1
+ import { readFile } from "node:fs/promises";
2
+ import YAML from "yaml";
3
+ import { ConfigError } from "../errors/index.js";
4
+ /** The most turns one scripted conversation sends — from stdin (`chat -`) or a file (`chat --script`). */
5
+ export const MAX_SCRIPT_TURNS = 200;
6
+ export const EXPECTATION_KEYS = ["did", "intent", "refused_by", "checks", "says", "not_says"];
7
+ const EXAMPLE = [
8
+ "turns:",
9
+ ' - message: "How much is an e-bike for the day?"',
10
+ " expect: { did: answer-rates, checks: pass }",
11
+ ' - message: "Can you recommend a restaurant?"',
12
+ " expect: { did: none, says: only help with }",
13
+ ].join("\n");
14
+ /** A conversation script from a YAML (or JSON) file. */
15
+ export async function loadChatScript(path) {
16
+ let text;
17
+ try {
18
+ text = await readFile(path, "utf8");
19
+ }
20
+ catch (error) {
21
+ const reason = error instanceof Error && "code" in error && error.code === "ENOENT" ? "no such file" : "it could not be read";
22
+ throw new ConfigError(`Cannot read the script ${path}: ${reason}.`, "Pass the path of a YAML or JSON file of turns.");
23
+ }
24
+ let document;
25
+ try {
26
+ document = YAML.parse(text);
27
+ }
28
+ catch (error) {
29
+ throw new ConfigError(`${path} is not valid YAML or JSON: ${error instanceof Error ? error.message : String(error)}`, EXAMPLE);
30
+ }
31
+ return parseChatScript(document, path);
32
+ }
33
+ /** Turns from a parsed script: `{turns: [...]}` or the list itself; a turn is `message` plus an optional `expect`. */
34
+ export function parseChatScript(document, source = "the script") {
35
+ const list = Array.isArray(document) ? document : isRecord(document) && Array.isArray(document.turns) ? document.turns : undefined;
36
+ if (list === undefined)
37
+ throw new ConfigError(`${source} needs a \`turns:\` list.`, EXAMPLE);
38
+ if (list.length === 0)
39
+ throw new ConfigError(`${source} has no turns.`, EXAMPLE);
40
+ if (list.length > MAX_SCRIPT_TURNS) {
41
+ throw new ConfigError(`${source} has ${list.length} turns; one run sends at most ${MAX_SCRIPT_TURNS}.`, "Split it, and continue the conversation with --thread <id>.");
42
+ }
43
+ return list.map((raw, index) => parseTurn(raw, `${source}, turn ${index + 1}`));
44
+ }
45
+ function parseTurn(raw, where) {
46
+ if (typeof raw === "string" && raw.trim())
47
+ return { message: raw.trim() };
48
+ if (!isRecord(raw))
49
+ throw new ConfigError(`${where}: a turn is a \`message\` with an optional \`expect\`.`, EXAMPLE);
50
+ const extra = Object.keys(raw).find((key) => key !== "message" && key !== "expect");
51
+ if (extra !== undefined)
52
+ throw new ConfigError(`${where}: unknown key \`${extra}\` — a turn takes \`message\` and \`expect\`.`);
53
+ const message = typeof raw.message === "string" ? raw.message.trim() : "";
54
+ if (!message)
55
+ throw new ConfigError(`${where}: \`message\` is missing or empty.`);
56
+ return raw.expect === undefined || raw.expect === null ? { message } : { message, expect: parseExpectation(raw.expect, where) };
57
+ }
58
+ function parseExpectation(raw, where) {
59
+ if (!isRecord(raw))
60
+ throw new ConfigError(`${where}: \`expect\` is a mapping, such as { did: answer-hours, checks: pass }.`);
61
+ const expectation = {};
62
+ for (const [key, value] of Object.entries(raw)) {
63
+ switch (key) {
64
+ case "did":
65
+ // `[]` reads as it is written: no capability ran.
66
+ expectation.did = value === "none" || (Array.isArray(value) && value.length === 0) ? "none" : names(value, `${where}, did`);
67
+ break;
68
+ case "intent":
69
+ expectation.intent = names(value, `${where}, intent`);
70
+ break;
71
+ case "refused_by":
72
+ expectation.refused_by = names(value, `${where}, refused_by`, 1)[0];
73
+ break;
74
+ case "checks":
75
+ if (value !== "pass")
76
+ throw new ConfigError(`${where}: \`checks\` takes \`pass\`.`);
77
+ expectation.checks = "pass";
78
+ break;
79
+ case "says":
80
+ expectation.says = names(value, `${where}, says`);
81
+ break;
82
+ case "not_says":
83
+ expectation.not_says = names(value, `${where}, not_says`);
84
+ break;
85
+ default:
86
+ throw new ConfigError(`${where}: unknown expectation \`${key}\`.`, `An expectation is one of: ${EXPECTATION_KEYS.join(", ")}.`);
87
+ }
88
+ }
89
+ if (Object.keys(expectation).length === 0)
90
+ throw new ConfigError(`${where}: \`expect\` is empty.`);
91
+ return expectation;
92
+ }
93
+ /** One name or a list of names, none empty. */
94
+ function names(value, where, most) {
95
+ const list = Array.isArray(value) ? value : [value];
96
+ const ok = list.length > 0 && list.every((item) => typeof item === "string" && item.trim() !== "");
97
+ if (!ok || (most !== undefined && list.length > most)) {
98
+ throw new ConfigError(`${where}: takes ${most === 1 ? "one name" : "a name or a list of names"}.`);
99
+ }
100
+ return list.map((item) => item.trim());
101
+ }
102
+ /** Each expectation of a turn against what its reply and sealed trace show. */
103
+ export function checkTurn(expectation, message) {
104
+ const trace = message.trace_info ?? undefined;
105
+ const results = [];
106
+ const did = strings(trace?.did);
107
+ if (expectation.did === "none")
108
+ results.push(outcome("did none", did.length === 0, `did ${did.join(", ")}`));
109
+ for (const capability of expectation.did === "none" ? [] : (expectation.did ?? [])) {
110
+ results.push(outcome(`did ${capability}`, did.includes(capability), did.length ? `did ${did.join(", ")}` : "did nothing"));
111
+ }
112
+ const intents = capabilities(trace?.intents);
113
+ for (const capability of expectation.intent ?? []) {
114
+ results.push(outcome(`intent ${capability}`, intents.includes(capability), intents.length ? `intent ${intents.join(", ")}` : "no intent"));
115
+ }
116
+ if (expectation.refused_by !== undefined) {
117
+ const refused = typeof trace?.refused_by === "string" && trace.refused_by ? trace.refused_by : undefined;
118
+ const met = expectation.refused_by === "none" ? refused === undefined : refused === expectation.refused_by;
119
+ results.push(outcome(`refused_by ${expectation.refused_by}`, met, refused ? `refused by ${refused}` : "nothing refused it"));
120
+ }
121
+ if (expectation.checks === "pass") {
122
+ const checks = Array.isArray(trace?.checks) ? trace.checks : undefined;
123
+ const failed = (checks ?? []).filter((check) => isRecord(check) && check.passed === false);
124
+ const named = failed.map((check) => (isRecord(check) && typeof check.check === "string" ? check.check : "?"));
125
+ results.push(outcome("checks pass", checks !== undefined && failed.length === 0, checks === undefined ? "no checks came back" : `failed: ${named.join("; ")}`));
126
+ }
127
+ const text = (message.text ?? "").toLowerCase();
128
+ for (const phrase of expectation.says ?? []) {
129
+ results.push(outcome(`says "${phrase}"`, text.includes(phrase.toLowerCase()), "not in the reply"));
130
+ }
131
+ for (const phrase of expectation.not_says ?? []) {
132
+ results.push(outcome(`never says "${phrase}"`, !text.includes(phrase.toLowerCase()), "it is in the reply"));
133
+ }
134
+ return results;
135
+ }
136
+ function outcome(expect, met, got) {
137
+ return met ? { expect, met } : { expect, met, got };
138
+ }
139
+ function strings(value) {
140
+ return Array.isArray(value) ? value.filter((item) => typeof item === "string") : [];
141
+ }
142
+ function capabilities(value) {
143
+ if (!Array.isArray(value))
144
+ return [];
145
+ return value.flatMap((entry) => (isRecord(entry) && typeof entry.capability === "string" ? [entry.capability] : []));
146
+ }
147
+ function isRecord(value) {
148
+ return value !== null && typeof value === "object" && !Array.isArray(value);
149
+ }
150
+ //# sourceMappingURL=chat-script.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chat-script.js","sourceRoot":"","sources":["../../../src/services/chat-script.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE5C,OAAO,IAAI,MAAM,MAAM,CAAC;AAGxB,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD,0GAA0G;AAC1G,MAAM,CAAC,MAAM,gBAAgB,GAAG,GAAG,CAAC;AAkCpC,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,CAAU,CAAC;AAEvG,MAAM,OAAO,GAAG;IACd,QAAQ;IACR,mDAAmD;IACnD,iDAAiD;IACjD,gDAAgD;IAChD,iDAAiD;CAClD,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAEb,wDAAwD;AACxD,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,IAAY;IAC/C,IAAI,IAAY,CAAC;IACjB,IAAI,CAAC;QACH,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACtC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,MAAM,GAAG,KAAK,YAAY,KAAK,IAAI,MAAM,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,sBAAsB,CAAC;QAC9H,MAAM,IAAI,WAAW,CAAC,0BAA0B,IAAI,KAAK,MAAM,GAAG,EAAE,gDAAgD,CAAC,CAAC;IACxH,CAAC;IACD,IAAI,QAAiB,CAAC;IACtB,IAAI,CAAC;QACH,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,WAAW,CAAC,GAAG,IAAI,+BAA+B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;IACjI,CAAC;IACD,OAAO,eAAe,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;AACzC,CAAC;AAED,sHAAsH;AACtH,MAAM,UAAU,eAAe,CAAC,QAAiB,EAAE,MAAM,GAAG,YAAY;IACtE,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;IACnI,IAAI,IAAI,KAAK,SAAS;QAAE,MAAM,IAAI,WAAW,CAAC,GAAG,MAAM,2BAA2B,EAAE,OAAO,CAAC,CAAC;IAC7F,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,MAAM,IAAI,WAAW,CAAC,GAAG,MAAM,gBAAgB,EAAE,OAAO,CAAC,CAAC;IACjF,IAAI,IAAI,CAAC,MAAM,GAAG,gBAAgB,EAAE,CAAC;QACnC,MAAM,IAAI,WAAW,CACnB,GAAG,MAAM,QAAQ,IAAI,CAAC,MAAM,iCAAiC,gBAAgB,GAAG,EAChF,6DAA6D,CAC9D,CAAC;IACJ,CAAC;IACD,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,GAAG,MAAM,UAAU,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;AAClF,CAAC;AAED,SAAS,SAAS,CAAC,GAAY,EAAE,KAAa;IAC5C,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,CAAC,IAAI,EAAE;QAAE,OAAO,EAAE,OAAO,EAAE,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC;IAC1E,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,MAAM,IAAI,WAAW,CAAC,GAAG,KAAK,wDAAwD,EAAE,OAAO,CAAC,CAAC;IACrH,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,QAAQ,CAAC,CAAC;IACpF,IAAI,KAAK,KAAK,SAAS;QAAE,MAAM,IAAI,WAAW,CAAC,GAAG,KAAK,mBAAmB,KAAK,+CAA+C,CAAC,CAAC;IAChI,MAAM,OAAO,GAAG,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAC1E,IAAI,CAAC,OAAO;QAAE,MAAM,IAAI,WAAW,CAAC,GAAG,KAAK,oCAAoC,CAAC,CAAC;IAClF,OAAO,GAAG,CAAC,MAAM,KAAK,SAAS,IAAI,GAAG,CAAC,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,gBAAgB,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC;AAClI,CAAC;AAED,SAAS,gBAAgB,CAAC,GAAY,EAAE,KAAa;IACnD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,MAAM,IAAI,WAAW,CAAC,GAAG,KAAK,yEAAyE,CAAC,CAAC;IAC7H,MAAM,WAAW,GAAoB,EAAE,CAAC;IACxC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QAC/C,QAAQ,GAAG,EAAE,CAAC;YACZ,KAAK,KAAK;gBACR,kDAAkD;gBAClD,WAAW,CAAC,GAAG,GAAG,KAAK,KAAK,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,KAAK,OAAO,CAAC,CAAC;gBAC5H,MAAM;YACR,KAAK,QAAQ;gBACX,WAAW,CAAC,MAAM,GAAG,KAAK,CAAC,KAAK,EAAE,GAAG,KAAK,UAAU,CAAC,CAAC;gBACtD,MAAM;YACR,KAAK,YAAY;gBACf,WAAW,CAAC,UAAU,GAAG,KAAK,CAAC,KAAK,EAAE,GAAG,KAAK,cAAc,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACpE,MAAM;YACR,KAAK,QAAQ;gBACX,IAAI,KAAK,KAAK,MAAM;oBAAE,MAAM,IAAI,WAAW,CAAC,GAAG,KAAK,8BAA8B,CAAC,CAAC;gBACpF,WAAW,CAAC,MAAM,GAAG,MAAM,CAAC;gBAC5B,MAAM;YACR,KAAK,MAAM;gBACT,WAAW,CAAC,IAAI,GAAG,KAAK,CAAC,KAAK,EAAE,GAAG,KAAK,QAAQ,CAAC,CAAC;gBAClD,MAAM;YACR,KAAK,UAAU;gBACb,WAAW,CAAC,QAAQ,GAAG,KAAK,CAAC,KAAK,EAAE,GAAG,KAAK,YAAY,CAAC,CAAC;gBAC1D,MAAM;YACR;gBACE,MAAM,IAAI,WAAW,CAAC,GAAG,KAAK,2BAA2B,GAAG,KAAK,EAAE,6BAA6B,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACpI,CAAC;IACH,CAAC;IACD,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,MAAM,KAAK,CAAC;QAAE,MAAM,IAAI,WAAW,CAAC,GAAG,KAAK,wBAAwB,CAAC,CAAC;IACnG,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,+CAA+C;AAC/C,SAAS,KAAK,CAAC,KAAc,EAAE,KAAa,EAAE,IAAa;IACzD,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IACpD,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IACnG,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC;QACtD,MAAM,IAAI,WAAW,CAAC,GAAG,KAAK,WAAW,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,2BAA2B,GAAG,CAAC,CAAC;IACrG,CAAC;IACD,OAAQ,IAAiB,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;AACvD,CAAC;AAED,+EAA+E;AAC/E,MAAM,UAAU,SAAS,CAAC,WAA4B,EAAE,OAAgB;IACtE,MAAM,KAAK,GAAG,OAAO,CAAC,UAAU,IAAI,SAAS,CAAC;IAC9C,MAAM,OAAO,GAAwB,EAAE,CAAC;IACxC,MAAM,GAAG,GAAG,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAChC,IAAI,WAAW,CAAC,GAAG,KAAK,MAAM;QAAE,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;IAC7G,KAAK,MAAM,UAAU,IAAI,WAAW,CAAC,GAAG,KAAK,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,CAAC;QACnF,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,UAAU,EAAE,EAAE,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC;IAC7H,CAAC;IACD,MAAM,OAAO,GAAG,YAAY,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAC7C,KAAK,MAAM,UAAU,IAAI,WAAW,CAAC,MAAM,IAAI,EAAE,EAAE,CAAC;QAClD,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,UAAU,EAAE,EAAE,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;IAC7I,CAAC;IACD,IAAI,WAAW,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;QACzC,MAAM,OAAO,GAAG,OAAO,KAAK,EAAE,UAAU,KAAK,QAAQ,IAAI,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC;QACzG,MAAM,GAAG,GAAG,WAAW,CAAC,UAAU,KAAK,MAAM,CAAC,CAAC,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,KAAK,WAAW,CAAC,UAAU,CAAC;QAC3G,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,WAAW,CAAC,UAAU,EAAE,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,cAAc,OAAO,EAAE,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC;IAC/H,CAAC;IACD,IAAI,WAAW,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;QAClC,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,CAAE,KAAK,CAAC,MAAoB,CAAC,CAAC,CAAC,SAAS,CAAC;QACtF,MAAM,MAAM,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,KAAK,CAAC,CAAC;QAC3F,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,OAAO,KAAK,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAC9G,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,WAAW,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;IAClK,CAAC;IACD,MAAM,IAAI,GAAG,CAAC,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;IAChD,KAAK,MAAM,MAAM,IAAI,WAAW,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC;QAC5C,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,MAAM,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,EAAE,kBAAkB,CAAC,CAAC,CAAC;IACrG,CAAC;IACD,KAAK,MAAM,MAAM,IAAI,WAAW,CAAC,QAAQ,IAAI,EAAE,EAAE,CAAC;QAChD,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,eAAe,MAAM,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,EAAE,oBAAoB,CAAC,CAAC,CAAC;IAC9G,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,OAAO,CAAC,MAAc,EAAE,GAAY,EAAE,GAAW;IACxD,OAAO,GAAG,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;AACtD,CAAC;AAED,SAAS,OAAO,CAAC,KAAc;IAC7B,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAkB,EAAE,CAAC,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AACtG,CAAC;AAED,SAAS,YAAY,CAAC,KAAc;IAClC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IACrC,OAAO,KAAK,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,OAAO,KAAK,CAAC,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvH,CAAC;AAED,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC"}
@@ -3,6 +3,7 @@ import { AgentSettingsClient } from "../api/agent-settings.js";
3
3
  import { BuilderApiClient } from "../api/builder-api.js";
4
4
  import { CloneClient } from "../api/clone.js";
5
5
  import { IdentityClient } from "../api/identity.js";
6
+ import { jwtExpiresAt } from "../api/jwt.js";
6
7
  import { KbmClient } from "../api/kbm.js";
7
8
  import { ManagementClient } from "../api/management.js";
8
9
  import { RuntimeApiClient } from "../api/runtime-api.js";
@@ -12,16 +13,8 @@ import { readCredentials, writeCredentials, } from "../config/index.js";
12
13
  import { AuthError } from "../errors/index.js";
13
14
  import { RUNTIME_VERSION_HEADER, runtimeRouteResolver, } from "../runtime-version/index.js";
14
15
  function expiry(token) {
15
- try {
16
- const payload = token.split(".")[1];
17
- if (!payload)
18
- return undefined;
19
- const claims = JSON.parse(Buffer.from(payload, "base64url").toString("utf8"));
20
- return claims.exp ? new Date(claims.exp * 1_000).toISOString() : undefined;
21
- }
22
- catch {
23
- return undefined;
24
- }
16
+ const exp = jwtExpiresAt(token);
17
+ return exp ? new Date(exp * 1_000).toISOString() : undefined;
25
18
  }
26
19
  export function createClients(context, options = {}) {
27
20
  const homeDir = options.homeDir ?? homedir();
@@ -1 +1 @@
1
- {"version":3,"file":"clients.js","sourceRoot":"","sources":["../../../src/services/clients.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"clients.js","sourceRoot":"","sources":["../../../src/services/clients.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAElC,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EACL,eAAe,EACf,gBAAgB,GAGjB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EACL,sBAAsB,EACtB,oBAAoB,GACrB,MAAM,6BAA6B,CAAC;AAgBrC,SAAS,MAAM,CAAC,KAAa;IAC3B,MAAM,GAAG,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;IAChC,OAAO,GAAG,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,GAAG,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;AAC/D,CAAC;AAED,MAAM,UAAU,aAAa,CAC3B,OAAgB,EAChB,UAAiE,EAAE;IAEnE,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,OAAO,EAAE,CAAC;IAC7C,MAAM,WAAW,GAAyB,EAAE,OAAO,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC;IAErE,IAAI,WAAW,GAA0B,GAAG,EAAE,CAC5C,OAAO,CAAC,MAAM,CACZ,IAAI,SAAS,CAAC,iDAAiD,CAAC,CACjE,CAAC;IACJ,MAAM,OAAO,GAAG,GAAoB,EAAE,CAAC,WAAW,EAAE,CAAC;IAErD,MAAM,iBAAiB,GAAG,IAAI,SAAS,CAAC;QACtC,OAAO,EAAE,UAAU;QACnB,OAAO,EAAE,OAAO,CAAC,QAAQ,CAAC,QAAQ;QAClC,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,UAAU,EAAE,gBAAgB;QAC5B,WAAW;QACX,OAAO;QACP,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACnD,CAAC,CAAC;IACH,MAAM,QAAQ,GAAG,IAAI,cAAc,CAAC,iBAAiB,CAAC,CAAC;IAEvD,IAAI,cAA2C,CAAC;IAChD,WAAW,GAAG,KAAK,IAAqB,EAAE;QACxC,qEAAqE;QACrE,0EAA0E;QAC1E,qDAAqD;QACrD,IAAI,OAAO,CAAC,WAAW,KAAK,KAAK,EAAE,CAAC;YAClC,MAAM,IAAI,SAAS,CACjB,wEAAwE,EACxE,0FAA0F,CAC3F,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,cAAc,EAAE,CAAC;YACpB,cAAc,GAAG,CAAC,KAAK,IAAI,EAAE;gBAC3B,MAAM,WAAW,GAAG,MAAM,eAAe,CAAC,OAAO,CAAC,CAAC;gBACnD,MAAM,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;gBACpE,IAAI,CAAC,OAAO,EAAE,aAAa,EAAE,CAAC;oBAC5B,MAAM,IAAI,SAAS,CAAC,+CAA+C,CAAC,CAAC;gBACvE,CAAC;gBACD,IAAI,SAAkD,CAAC;gBACvD,IAAI,CAAC;oBACH,SAAS,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;gBAC5D,CAAC;gBAAC,MAAM,CAAC;oBACP,MAAM,IAAI,SAAS,CACjB,iDAAiD,EACjD,mCAAmC,CACpC,CAAC;gBACJ,CAAC;gBACD,MAAM,IAAI,GAAe;oBACvB,GAAG,OAAO;oBACV,YAAY,EAAE,SAAS,CAAC,KAAK;oBAC7B,aAAa,EAAE,SAAS,CAAC,YAAY;oBACrC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBAC5E,CAAC;gBACF,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;gBACpC,WAAW,CAAC,OAAO,CAAC,OAAO,CAAE,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC;gBAC1D,MAAM,gBAAgB,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;gBAC7C,OAAO,SAAS,CAAC,KAAK,CAAC;YACzB,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE;gBAChB,cAAc,GAAG,SAAS,CAAC;YAC7B,CAAC,CAAC,CAAC;QACL,CAAC;QACD,OAAO,cAAc,CAAC;IACxB,CAAC,CAAC;IAEF,MAAM,MAAM,GAAG;QACb,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,GAAG,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7D,WAAW;QACX,OAAO;QACP,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACnD,CAAC;IACF,MAAM,mBAAmB,GAAG,IAAI,SAAS,CAAC;QACxC,OAAO,EAAE,YAAY;QACrB,OAAO,EAAE,OAAO,CAAC,QAAQ,CAAC,UAAU;QACpC,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,SAAS,EAAE,uBAAuB;QAClC,GAAG,MAAM;KACV,CAAC,CAAC;IACH,8DAA8D;IAC9D,MAAM,sBAAsB,GAAG,IAAI,SAAS,CAAC;QAC3C,OAAO,EAAE,gBAAgB;QACzB,OAAO,EAAE,OAAO,CAAC,QAAQ,CAAC,aAAa;QACvC,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,SAAS,EAAE,mBAAmB;QAC9B,GAAG,MAAM;KACV,CAAC,CAAC;IACH,MAAM,aAAa,GAAG,IAAI,mBAAmB,CAAC,sBAAsB,CAAC,CAAC;IACtE,4EAA4E;IAC5E,yEAAyE;IACzE,0EAA0E;IAC1E,4EAA4E;IAC5E,MAAM,gBAAgB,GAAG,IAAI,SAAS,CAAC;QACrC,OAAO,EAAE,aAAa;QACtB,OAAO,EAAE,OAAO,CAAC,QAAQ,CAAC,OAAO;QACjC,GAAG,CAAC,OAAO,CAAC,cAAc;YACxB,CAAC,CAAC;gBACE,OAAO,EAAE,EAAE,CAAC,sBAAsB,CAAC,EAAE,OAAO,CAAC,cAAc,EAAE;gBAC7D,YAAY,EAAE,oBAAoB,CAChC,OAAO,CAAC,cAAc,EACtB,OAAO,CAAC,QAAQ,CAAC,OAAO,EACxB,aAAa,CACd;aACF;YACH,CAAC,CAAC,EAAE,CAAC;QACP,GAAG,MAAM;KACV,CAAC,CAAC;IACH,MAAM,YAAY,GAAG,IAAI,SAAS,CAAC;QACjC,OAAO,EAAE,KAAK;QACd,OAAO,EAAE,OAAO,CAAC,QAAQ,CAAC,GAAG;QAC7B,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,SAAS,EAAE,mBAAmB;QAC9B,GAAG,MAAM;KACV,CAAC,CAAC;IACH,uEAAuE;IACvE,uEAAuE;IACvE,uEAAuE;IACvE,2EAA2E;IAC3E,0EAA0E;IAC1E,wEAAwE;IACxE,2EAA2E;IAC3E,2EAA2E;IAC3E,MAAM,gBAAgB,GAAG,IAAI,SAAS,CAAC;QACrC,OAAO,EAAE,aAAa;QACtB,OAAO,EAAE,OAAO,CAAC,QAAQ,CAAC,OAAO;QACjC,GAAG,CAAC,OAAO,CAAC,cAAc;YACxB,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,CAAC,sBAAsB,CAAC,EAAE,OAAO,CAAC,cAAc,EAAE,EAAE;YACnE,CAAC,CAAC,EAAE,CAAC;QACP,GAAG,MAAM;KACV,CAAC,CAAC;IAEH,OAAO;QACL,QAAQ;QACR,UAAU,EAAE,IAAI,gBAAgB,CAAC,mBAAmB,CAAC;QACrD,OAAO,EAAE,IAAI,gBAAgB,CAAC,gBAAgB,CAAC;QAC/C,KAAK,EAAE,IAAI,WAAW,CAAC,mBAAmB,CAAC;QAC3C,KAAK,EAAE,IAAI,WAAW,CAAC,mBAAmB,CAAC;QAC3C,GAAG,EAAE,IAAI,SAAS,CAAC,YAAY,CAAC;QAChC,aAAa;QACb,OAAO,EAAE,IAAI,gBAAgB,CAAC,gBAAgB,CAAC;KAChD,CAAC;AACJ,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import { type ManagementClient } from "../api/management.js";
2
- import type { Message, RuntimeApiClient, RuntimeTrace, SendMessageResponse, Thread } from "../api/runtime-api.js";
2
+ import type { AgentThreadFilters, ChatStreamEvent, Message, RuntimeApiClient, RuntimeTrace, SendMessageResponse, Thread, ThreadPage } from "../api/runtime-api.js";
3
3
  import type { Context } from "../config/index.js";
4
4
  import { type ThreadCommitHints } from "../errors/index.js";
5
5
  export declare function parseVariables(values?: string[]): Record<string, unknown>;
@@ -15,14 +15,39 @@ export declare function resolveThreadVersion(context: Context, clients: {
15
15
  management: ManagementClient;
16
16
  runtime: RuntimeApiClient;
17
17
  }, threadId: string, hints: ThreadCommitHints, at?: string): Promise<SendVersion>;
18
- export declare function sendMessage(context: Context, runtime: RuntimeApiClient, input: {
18
+ export interface SendInput {
19
19
  text: string;
20
20
  threadId?: string;
21
21
  version?: SendVersion;
22
22
  variables?: string[];
23
23
  localDir?: string;
24
24
  includeTrace?: boolean;
25
- }): Promise<SendMessageResponse>;
25
+ }
26
+ export declare function sendMessage(context: Context, runtime: RuntimeApiClient, input: SendInput): Promise<SendMessageResponse>;
27
+ /** How long a turn waits, after its reply, for the late follow-up suggestions. */
28
+ export declare const SUGGESTIONS_WAIT_MS = 15000;
29
+ export interface ChatTurnOptions {
30
+ /** Stream the turn (the default); `false` sends the blocking request. */
31
+ stream?: boolean;
32
+ /** Stops the turn (Ctrl+C). The runtime may still finish it on the thread. */
33
+ signal?: AbortSignal;
34
+ /** Every frame as it arrives — what a live view draws. */
35
+ onEvent?: (event: ChatStreamEvent) => void;
36
+ /** The stream route was not there, so the turn was sent as one request. */
37
+ onFallback?: (reason: string) => void;
38
+ /** How long to wait after the reply for the late follow-up suggestions;
39
+ * `0` returns the moment the reply lands, as a blocking send does. */
40
+ suggestionsWaitMs?: number;
41
+ }
42
+ /**
43
+ * One turn, streamed: the same request and the same result as `sendMessage`
44
+ * (`{thread_id, message}`), with every frame handed to `onEvent` as the
45
+ * engine works. Late follow-up suggestions fill the message's own
46
+ * `followup_suggestions` when they arrive within `suggestionsWaitMs` of the
47
+ * reply. A runtime without the stream route (404/405) gets the blocking
48
+ * request instead, so streaming never costs a turn.
49
+ */
50
+ export declare function chatTurn(context: Context, runtime: RuntimeApiClient, input: SendInput, options?: ChatTurnOptions): Promise<SendMessageResponse>;
26
51
  export declare function createThread(context: Context, runtime: RuntimeApiClient, version?: SendVersion): Promise<Thread>;
27
52
  export declare function getThread(runtime: RuntimeApiClient, threadId: string): Promise<Thread>;
28
53
  export declare function listThreads(context: Context, runtime: RuntimeApiClient, options?: {
@@ -40,5 +65,16 @@ export declare function listAgentThreads(context: Context, runtime: RuntimeApiCl
40
65
  after?: string;
41
66
  before?: string;
42
67
  }): Promise<Thread[]>;
68
+ /**
69
+ * One page of conversations for `thread list`: the checkout's agent (the
70
+ * signed-in user's own, unless `everyone`), or — outside a checkout, or with
71
+ * `allAgents` — the user's threads across every agent.
72
+ */
73
+ export declare function threadPage(context: Context, runtime: RuntimeApiClient, options?: Omit<AgentThreadFilters, "userId"> & {
74
+ everyone?: boolean;
75
+ allAgents?: boolean;
76
+ }): Promise<ThreadPage & {
77
+ scope: "agent" | "user";
78
+ }>;
43
79
  export declare function listMessages(runtime: RuntimeApiClient, threadId: string): Promise<Message[]>;
44
80
  export declare function trace(runtime: RuntimeApiClient, threadId: string, interactionId?: string): Promise<RuntimeTrace | RuntimeTrace[]>;