@framers/agentos 0.12.13 → 0.12.14

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 (71) hide show
  1. package/README.md +1 -1
  2. package/dist/api/agent.d.ts +35 -1
  3. package/dist/api/agent.d.ts.map +1 -1
  4. package/dist/api/agent.js +8 -0
  5. package/dist/api/agent.js.map +1 -1
  6. package/dist/api/gmi.d.ts +21 -0
  7. package/dist/api/gmi.d.ts.map +1 -0
  8. package/dist/api/gmi.js +527 -0
  9. package/dist/api/gmi.js.map +1 -0
  10. package/dist/api/runtime/agentCognitiveMemory.d.ts +82 -0
  11. package/dist/api/runtime/agentCognitiveMemory.d.ts.map +1 -0
  12. package/dist/api/runtime/agentCognitiveMemory.js +277 -0
  13. package/dist/api/runtime/agentCognitiveMemory.js.map +1 -0
  14. package/dist/api/runtime/capabilityContract.d.ts +21 -1
  15. package/dist/api/runtime/capabilityContract.d.ts.map +1 -1
  16. package/dist/api/runtime/capabilityContract.js +15 -15
  17. package/dist/api/runtime/capabilityContract.js.map +1 -1
  18. package/dist/api/runtime/gmiCognition.d.ts +66 -0
  19. package/dist/api/runtime/gmiCognition.d.ts.map +1 -0
  20. package/dist/api/runtime/gmiCognition.js +58 -0
  21. package/dist/api/runtime/gmiCognition.js.map +1 -0
  22. package/dist/api/runtime/gmiPersona.d.ts +16 -0
  23. package/dist/api/runtime/gmiPersona.d.ts.map +1 -0
  24. package/dist/api/runtime/gmiPersona.js +91 -0
  25. package/dist/api/runtime/gmiPersona.js.map +1 -0
  26. package/dist/api/runtime/gmiResults.d.ts +98 -0
  27. package/dist/api/runtime/gmiResults.d.ts.map +1 -0
  28. package/dist/api/runtime/gmiResults.js +333 -0
  29. package/dist/api/runtime/gmiResults.js.map +1 -0
  30. package/dist/api/runtime/gmiSession.d.ts +85 -0
  31. package/dist/api/runtime/gmiSession.d.ts.map +1 -0
  32. package/dist/api/runtime/gmiSession.js +285 -0
  33. package/dist/api/runtime/gmiSession.js.map +1 -0
  34. package/dist/api/runtime/gmiTranscript.d.ts +48 -0
  35. package/dist/api/runtime/gmiTranscript.d.ts.map +1 -0
  36. package/dist/api/runtime/gmiTranscript.js +110 -0
  37. package/dist/api/runtime/gmiTranscript.js.map +1 -0
  38. package/dist/api/runtime/lightweightAgentDiagnostics.d.ts +6 -1
  39. package/dist/api/runtime/lightweightAgentDiagnostics.d.ts.map +1 -1
  40. package/dist/api/runtime/lightweightAgentDiagnostics.js +9 -2
  41. package/dist/api/runtime/lightweightAgentDiagnostics.js.map +1 -1
  42. package/dist/api/sessionHistory.d.ts +43 -1
  43. package/dist/api/sessionHistory.d.ts.map +1 -1
  44. package/dist/api/sessionHistory.js +56 -1
  45. package/dist/api/sessionHistory.js.map +1 -1
  46. package/dist/api/sessionTranscript.d.ts +8 -0
  47. package/dist/api/sessionTranscript.d.ts.map +1 -1
  48. package/dist/api/sessionTranscript.js.map +1 -1
  49. package/dist/api/transferStyle.d.ts +8 -0
  50. package/dist/api/transferStyle.d.ts.map +1 -1
  51. package/dist/api/transferStyle.js +4 -1
  52. package/dist/api/transferStyle.js.map +1 -1
  53. package/dist/api/types.d.ts +11 -0
  54. package/dist/api/types.d.ts.map +1 -1
  55. package/dist/api/types.js.map +1 -1
  56. package/dist/cognition/substrate/GMI.d.ts.map +1 -1
  57. package/dist/cognition/substrate/GMI.js +54 -2
  58. package/dist/cognition/substrate/GMI.js.map +1 -1
  59. package/dist/cognition/substrate/IGMI.d.ts +23 -1
  60. package/dist/cognition/substrate/IGMI.d.ts.map +1 -1
  61. package/dist/cognition/substrate/IGMI.js.map +1 -1
  62. package/dist/io/vision/VisionPipeline.d.ts +5 -0
  63. package/dist/io/vision/VisionPipeline.d.ts.map +1 -1
  64. package/dist/io/vision/VisionPipeline.js +28 -13
  65. package/dist/io/vision/VisionPipeline.js.map +1 -1
  66. package/dist/io/vision/index.d.ts.map +1 -1
  67. package/dist/io/vision/index.js +2 -0
  68. package/dist/io/vision/index.js.map +1 -1
  69. package/dist/io/vision/types.d.ts +11 -0
  70. package/dist/io/vision/types.d.ts.map +1 -1
  71. package/package.json +1 -1
@@ -0,0 +1,91 @@
1
+ /**
2
+ * @file gmiPersona.ts
3
+ * The persona of a GMI built from agent options (`agent({ runtime: 'gmi' })`).
4
+ *
5
+ * The base system prompt is the text the legacy path sends: `buildSystemPrompt(opts)`
6
+ * (or the joined `systemBlocks`), with the chain-of-thought instruction first when
7
+ * the agent has tools, as `generateText` puts it. The completion options are the
8
+ * ones `agent()` forwards on every call. Sentiment presets are expanded into
9
+ * metaprompts, as the persona loaders expand them, because the GMI runs only the
10
+ * persona's `metaPrompts`.
11
+ */
12
+ import { createHash, randomUUID } from 'node:crypto';
13
+ import { buildSystemPrompt } from '../agent.js';
14
+ import { resolveChainOfThought } from '../generateText.js';
15
+ import { resolveModelOption } from '../model.js';
16
+ import { normalizeHexacoTraits } from '../../cognition/substrate/personas/hexaco.js';
17
+ import { normalizePersonaDefinition } from '../../cognition/substrate/personas/personaNormalization.js';
18
+ /** The session store bounds history (spec D10), so the GMI's own count window stays out of the way. */
19
+ export const GMI_SESSION_MAX_HISTORY_MESSAGES = 100000;
20
+ /**
21
+ * A stable persona id from the agent's name: a lowercase ASCII slug, or, for a
22
+ * name with no Latin letters or digits, `agent-` and a hash of the name.
23
+ */
24
+ function personaIdFor(name) {
25
+ const slug = name
26
+ .normalize('NFKD')
27
+ .replace(/[̀-ͯ]/g, '')
28
+ .toLowerCase()
29
+ .replace(/[^a-z0-9]+/g, '-')
30
+ .replace(/^-+|-+$/g, '');
31
+ return slug || `agent-${createHash('sha256').update(name).digest('hex').slice(0, 12)}`;
32
+ }
33
+ /** The completion options `agent()` forwards on every call (its `baseOpts`), unset ones left out. */
34
+ function completionOptionsOf(opts) {
35
+ const out = {};
36
+ const maxTokens = opts.maxTokens ?? opts.controls?.maxTotalTokens;
37
+ if (maxTokens !== undefined)
38
+ out.maxTokens = maxTokens;
39
+ if (opts.controls?.maxDurationMs !== undefined)
40
+ out.requestTimeout = opts.controls.maxDurationMs;
41
+ if (opts.thinking !== undefined)
42
+ out.thinking = opts.thinking;
43
+ if (opts.effort !== undefined)
44
+ out.effort = opts.effort;
45
+ if (opts.customModelParams !== undefined)
46
+ out.customModelParams = opts.customModelParams;
47
+ if (opts.cache !== undefined)
48
+ out.cache = opts.cache;
49
+ return out;
50
+ }
51
+ function basePrompt(opts, hasTools) {
52
+ const system = opts.systemBlocks
53
+ ? opts.systemBlocks.map((block) => block.text).filter(Boolean).join('\n\n')
54
+ : buildSystemPrompt(opts) ?? '';
55
+ const cot = hasTools ? resolveChainOfThought(opts.chainOfThought ?? true) : undefined;
56
+ if (!cot)
57
+ return system;
58
+ return system ? `${cot}\n\n${system}` : cot;
59
+ }
60
+ /**
61
+ * Builds the persona of a GMI from agent options (spec D6).
62
+ *
63
+ * @param opts - The agent's options.
64
+ * @param cognition - The resolved profile ({@link resolveCognition}): sentiment tracking and metaprompts.
65
+ * @param tools - The agent's tools, adapted: they decide the chain-of-thought text and the persona's capabilities.
66
+ * @throws {Error} When no provider or model can be resolved, as `generateText` throws.
67
+ */
68
+ export function personaFromAgentOptions(opts, cognition, tools) {
69
+ const { providerId, modelId } = resolveModelOption({ provider: opts.provider, model: opts.model, baseUrl: opts.baseUrl }, 'text');
70
+ const name = opts.name?.trim() || 'Agent';
71
+ const firstLine = opts.instructions?.split('\n').map((line) => line.trim()).find(Boolean);
72
+ const completion = completionOptionsOf(opts);
73
+ const presets = cognition.metaprompts === 'all' ? ['all'] : cognition.metaprompts || [];
74
+ const persona = {
75
+ id: opts.name?.trim() ? personaIdFor(opts.name.trim()) : `agent-${randomUUID()}`,
76
+ name,
77
+ description: firstLine ?? name,
78
+ version: '1.0.0',
79
+ baseSystemPrompt: basePrompt(opts, tools.length > 0),
80
+ ...(opts.personality ? { personalityTraits: normalizeHexacoTraits(opts.personality) } : {}),
81
+ defaultProviderId: providerId,
82
+ defaultModelId: modelId,
83
+ ...(Object.keys(completion).length > 0 ? { defaultModelCompletionOptions: completion } : {}),
84
+ allowedCapabilities: [...new Set(tools.flatMap((tool) => tool.requiredCapabilities ?? []))],
85
+ conversationContextConfig: { maxMessages: GMI_SESSION_MAX_HISTORY_MESSAGES },
86
+ sentimentTracking: cognition.sentiment ? { enabled: true, presets } : { enabled: false },
87
+ ...(cognition.metaprompts === false ? { metaPrompts: [] } : {}),
88
+ };
89
+ return normalizePersonaDefinition(persona);
90
+ }
91
+ //# sourceMappingURL=gmiPersona.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gmiPersona.js","sourceRoot":"","sources":["../../../src/api/runtime/gmiPersona.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,98 @@
1
+ /**
2
+ * @file gmiResults.ts
3
+ * Folds a GMI turn's output chunks into the result shapes of `generateText`
4
+ * (`session.send()`) and `streamText` (`session.stream()`) on the GMI path
5
+ * (`agent({ runtime: 'gmi' })`).
6
+ *
7
+ * The rules are streamText's: the turn's text is the latest step that produced
8
+ * text; usage adds each step's STEP_FINISHED usage once (USAGE_UPDATE carries a
9
+ * request's running total) plus the billed usage of attempts that failed before
10
+ * any output; a run that called tools and produced no text ends as
11
+ * `'tool-calls'`; an ERROR chunk ends it as `'error'` with the GMI's code.
12
+ */
13
+ import { GMIError } from '../../core/utils/errors.js';
14
+ import { type GMIOutputChunk, type StepFinishedChunkPayload, type ToolResultChunkPayload } from '../../cognition/substrate/IGMI.js';
15
+ import { type GenerateTextResult, type TokenUsage, type ToolCallRecord } from '../generateText.js';
16
+ import { type StreamTextResult } from '../streamText.js';
17
+ import type { SessionTranscriptMessage } from '../sessionTranscript.js';
18
+ /** The error a turn ended with, as the GMI reported it. */
19
+ export interface GmiTurnError {
20
+ code?: string;
21
+ message: string;
22
+ details?: unknown;
23
+ }
24
+ /** An attempt that failed before any output and was billed (reported on a USAGE_UPDATE with `metadata.attemptFailed`). */
25
+ export interface GmiFailedAttempt {
26
+ providerId?: string;
27
+ modelId?: string;
28
+ usage: TokenUsage;
29
+ }
30
+ /** The message a failed tool result carries. */
31
+ export declare function toolErrorMessage(result: ToolResultChunkPayload): string;
32
+ /**
33
+ * Accumulates one turn's chunks. `push` every chunk in order; read the result
34
+ * once the turn has ended (or at any point for a partial view).
35
+ */
36
+ export declare class GmiTurnFolder {
37
+ /** The STEP_FINISHED payloads, in order. */
38
+ readonly steps: StepFinishedChunkPayload[];
39
+ /** Every requested call in order, with its result once the TOOL_RESULT arrived. */
40
+ private readonly calls;
41
+ private readonly overrides;
42
+ private readonly failed;
43
+ private failure;
44
+ push(chunk: GMIOutputChunk): void;
45
+ /** Marks the turn failed by a thrown error (the turn's generator itself threw). An ERROR chunk already seen wins. */
46
+ fail(error: unknown): void;
47
+ /** Replaces a step's text (`onAfterGeneration`), in the result and in what the session stores. */
48
+ overrideStepText(stepIndex: number, text: string): void;
49
+ /** A step's text as the result reports it: a schema answer as its JSON string, else the hook's replacement, else the step's own text. */
50
+ stepText(step: StepFinishedChunkPayload): string;
51
+ /** The latest step that produced text, streamText's rule. */
52
+ text(): string;
53
+ /** Each step's usage once, plus every billed failed attempt. */
54
+ usage(): TokenUsage;
55
+ /** The billed attempts that failed before any output, in order. */
56
+ failedAttempts(): GmiFailedAttempt[];
57
+ /** Every call the model requested, with its result or error. */
58
+ toolCalls(): ToolCallRecord[];
59
+ /** The latest schema answer a step carried, if any. */
60
+ structuredOutput(): unknown;
61
+ error(): GmiTurnError | undefined;
62
+ finishReason(): GenerateTextResult['finishReason'];
63
+ /** The error the turn ended with, as a GMIError keeping the GMI's code. */
64
+ toError(): GMIError | undefined;
65
+ /**
66
+ * The turn as `generateText` reports a run: provider, model and response
67
+ * metadata from the last step, the text, the usage, the tool calls and the
68
+ * finish reason.
69
+ *
70
+ * @param transcriptDelta - The messages the turn added to the session store.
71
+ */
72
+ toGenerateTextResult(transcriptDelta?: SessionTranscriptMessage[]): GenerateTextResult;
73
+ }
74
+ /** Options for {@link streamFromGmiTurn}. */
75
+ export interface GmiStreamOptions {
76
+ /**
77
+ * A folder the turn already pushes every chunk into (the session's, which
78
+ * carries the `onAfterGeneration` replacements). Without one, the stream
79
+ * folds the chunks itself.
80
+ */
81
+ folder?: GmiTurnFolder;
82
+ }
83
+ /**
84
+ * A `StreamTextResult` over a GMI turn. The turn is drained eagerly, so every
85
+ * promise settles whether the caller iterates, stops iterating early, or never
86
+ * iterates; `textStream` and `fullStream` replay what arrived and wait for more.
87
+ *
88
+ * `textStream` yields every TEXT_DELTA as it arrives. `fullStream` maps
89
+ * TEXT_DELTA to `text`, TOOL_CALL_REQUEST to `tool-call`, TOOL_RESULT to
90
+ * `tool-result` and ERROR (or a thrown error) to a final `error` part. `text`
91
+ * is the latest step's text; after an error it is the text the failed step
92
+ * delivered, as streamText resolves it.
93
+ *
94
+ * @param turn - The turn's chunks.
95
+ * @param options - A caller-owned folder; see {@link GmiStreamOptions}.
96
+ */
97
+ export declare function streamFromGmiTurn(turn: AsyncIterable<GMIOutputChunk>, options?: GmiStreamOptions): StreamTextResult;
98
+ //# sourceMappingURL=gmiResults.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gmiResults.d.ts","sourceRoot":"","sources":["../../../src/api/runtime/gmiResults.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,EAAE,QAAQ,EAAgB,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAEL,KAAK,cAAc,EACnB,KAAK,wBAAwB,EAE7B,KAAK,sBAAsB,EAC5B,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAAiB,KAAK,kBAAkB,EAAE,KAAK,UAAU,EAAE,KAAK,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAClH,OAAO,EAAgD,KAAK,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACvG,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AAExE,2DAA2D;AAC3D,MAAM,WAAW,YAAY;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,0HAA0H;AAC1H,MAAM,WAAW,gBAAgB;IAC/B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,UAAU,CAAC;CACnB;AAiBD,gDAAgD;AAChD,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,sBAAsB,GAAG,MAAM,CAGvE;AAED;;;GAGG;AACH,qBAAa,aAAa;IACxB,4CAA4C;IAC5C,QAAQ,CAAC,KAAK,EAAE,wBAAwB,EAAE,CAAM;IAChD,mFAAmF;IACnF,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAyE;IAC/F,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA6B;IACvD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA0B;IACjD,OAAO,CAAC,OAAO,CAA2B;IAE1C,IAAI,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI;IA0CjC,qHAAqH;IACrH,IAAI,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI;IAQ1B,kGAAkG;IAClG,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IAIvD,yIAAyI;IACzI,QAAQ,CAAC,IAAI,EAAE,wBAAwB,GAAG,MAAM;IAKhD,6DAA6D;IAC7D,IAAI,IAAI,MAAM;IAQd,gEAAgE;IAChE,KAAK,IAAI,UAAU;IAOnB,mEAAmE;IACnE,cAAc,IAAI,gBAAgB,EAAE;IAIpC,gEAAgE;IAChE,SAAS,IAAI,cAAc,EAAE;IAS7B,uDAAuD;IACvD,gBAAgB,IAAI,OAAO;IAO3B,KAAK,IAAI,YAAY,GAAG,SAAS;IAIjC,YAAY,IAAI,kBAAkB,CAAC,cAAc,CAAC;IAQlD,2EAA2E;IAC3E,OAAO,IAAI,QAAQ,GAAG,SAAS;IAK/B;;;;;;OAMG;IACH,oBAAoB,CAAC,eAAe,CAAC,EAAE,wBAAwB,EAAE,GAAG,kBAAkB;CAgBvF;AAeD,6CAA6C;AAC7C,MAAM,WAAW,gBAAgB;IAC/B;;;;OAIG;IACH,MAAM,CAAC,EAAE,aAAa,CAAC;CACxB;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,aAAa,CAAC,cAAc,CAAC,EAAE,OAAO,GAAE,gBAAqB,GAAG,gBAAgB,CAiHvH"}
@@ -0,0 +1,333 @@
1
+ /**
2
+ * @file gmiResults.ts
3
+ * Folds a GMI turn's output chunks into the result shapes of `generateText`
4
+ * (`session.send()`) and `streamText` (`session.stream()`) on the GMI path
5
+ * (`agent({ runtime: 'gmi' })`).
6
+ *
7
+ * The rules are streamText's: the turn's text is the latest step that produced
8
+ * text; usage adds each step's STEP_FINISHED usage once (USAGE_UPDATE carries a
9
+ * request's running total) plus the billed usage of attempts that failed before
10
+ * any output; a run that called tools and produced no text ends as
11
+ * `'tool-calls'`; an ERROR chunk ends it as `'error'` with the GMI's code.
12
+ */
13
+ import { GMIError, GMIErrorCode } from '../../core/utils/errors.js';
14
+ import { GMIOutputChunkType, } from '../../cognition/substrate/IGMI.js';
15
+ import { addModelUsage } from '../generateText.js';
16
+ import { normalizeStreamFinishReason } from '../streamText.js';
17
+ function emptyUsage() {
18
+ return { promptTokens: 0, completionTokens: 0, totalTokens: 0 };
19
+ }
20
+ /** Adds one TokenUsage to another; an optional counter is added only when present. */
21
+ function addTokenUsage(target, add) {
22
+ target.promptTokens += add.promptTokens;
23
+ target.completionTokens += add.completionTokens;
24
+ target.totalTokens += add.totalTokens;
25
+ if (add.costUSD !== undefined)
26
+ target.costUSD = (target.costUSD ?? 0) + add.costUSD;
27
+ if (add.cacheReadTokens !== undefined)
28
+ target.cacheReadTokens = (target.cacheReadTokens ?? 0) + add.cacheReadTokens;
29
+ if (add.cacheCreationTokens !== undefined)
30
+ target.cacheCreationTokens = (target.cacheCreationTokens ?? 0) + add.cacheCreationTokens;
31
+ if (add.inclusiveInputTokens !== undefined)
32
+ target.inclusiveInputTokens = (target.inclusiveInputTokens ?? 0) + add.inclusiveInputTokens;
33
+ }
34
+ /** The message a failed tool result carries. */
35
+ export function toolErrorMessage(result) {
36
+ const details = result.errorDetails;
37
+ return typeof details?.message === 'string' && details.message ? details.message : 'Tool failed.';
38
+ }
39
+ /**
40
+ * Accumulates one turn's chunks. `push` every chunk in order; read the result
41
+ * once the turn has ended (or at any point for a partial view).
42
+ */
43
+ export class GmiTurnFolder {
44
+ constructor() {
45
+ /** The STEP_FINISHED payloads, in order. */
46
+ this.steps = [];
47
+ /** Every requested call in order, with its result once the TOOL_RESULT arrived. */
48
+ this.calls = [];
49
+ this.overrides = new Map();
50
+ this.failed = [];
51
+ }
52
+ push(chunk) {
53
+ switch (chunk.type) {
54
+ case GMIOutputChunkType.STEP_FINISHED:
55
+ this.steps.push(chunk.content);
56
+ break;
57
+ case GMIOutputChunkType.TOOL_CALL_REQUEST:
58
+ for (const call of chunk.content ?? [])
59
+ this.calls.push({ call });
60
+ break;
61
+ case GMIOutputChunkType.TOOL_RESULT: {
62
+ const result = chunk.content;
63
+ // The latest unanswered call with this id: providers may reuse ids across steps.
64
+ for (let i = this.calls.length - 1; i >= 0; i--) {
65
+ if (this.calls[i].call.id === result.toolCallId && !this.calls[i].result) {
66
+ this.calls[i].result = result;
67
+ break;
68
+ }
69
+ }
70
+ break;
71
+ }
72
+ case GMIOutputChunkType.USAGE_UPDATE: {
73
+ const meta = chunk.metadata;
74
+ if (meta?.attemptFailed) {
75
+ const usage = emptyUsage();
76
+ addModelUsage(usage, chunk.content);
77
+ this.failed.push({ providerId: meta.providerId, modelId: meta.modelId, usage });
78
+ }
79
+ break;
80
+ }
81
+ case GMIOutputChunkType.ERROR: {
82
+ const details = chunk.errorDetails;
83
+ this.failure = {
84
+ code: typeof details?.code === 'string' ? details.code : undefined,
85
+ message: String(chunk.content),
86
+ details: details?.details,
87
+ };
88
+ break;
89
+ }
90
+ default:
91
+ break;
92
+ }
93
+ }
94
+ /** Marks the turn failed by a thrown error (the turn's generator itself threw). An ERROR chunk already seen wins. */
95
+ fail(error) {
96
+ this.failure ?? (this.failure = {
97
+ code: error instanceof GMIError ? String(error.code) : undefined,
98
+ message: error instanceof Error ? error.message : String(error),
99
+ details: error instanceof GMIError ? error.details : undefined,
100
+ });
101
+ }
102
+ /** Replaces a step's text (`onAfterGeneration`), in the result and in what the session stores. */
103
+ overrideStepText(stepIndex, text) {
104
+ this.overrides.set(stepIndex, text);
105
+ }
106
+ /** A step's text as the result reports it: a schema answer as its JSON string, else the hook's replacement, else the step's own text. */
107
+ stepText(step) {
108
+ if (step.structuredOutput !== undefined)
109
+ return JSON.stringify(step.structuredOutput);
110
+ return this.overrides.get(step.stepIndex) ?? step.text;
111
+ }
112
+ /** The latest step that produced text, streamText's rule. */
113
+ text() {
114
+ for (let i = this.steps.length - 1; i >= 0; i--) {
115
+ const t = this.stepText(this.steps[i]);
116
+ if (t)
117
+ return t;
118
+ }
119
+ return '';
120
+ }
121
+ /** Each step's usage once, plus every billed failed attempt. */
122
+ usage() {
123
+ const total = emptyUsage();
124
+ for (const step of this.steps)
125
+ addModelUsage(total, step.usage);
126
+ for (const attempt of this.failed)
127
+ addTokenUsage(total, attempt.usage);
128
+ return total;
129
+ }
130
+ /** The billed attempts that failed before any output, in order. */
131
+ failedAttempts() {
132
+ return this.failed.map((a) => ({ ...a, usage: { ...a.usage } }));
133
+ }
134
+ /** Every call the model requested, with its result or error. */
135
+ toolCalls() {
136
+ return this.calls.map(({ call, result }) => {
137
+ const record = { name: call.name, args: call.arguments };
138
+ if (result?.isError)
139
+ record.error = toolErrorMessage(result);
140
+ else if (result)
141
+ record.result = result.result;
142
+ return record;
143
+ });
144
+ }
145
+ /** The latest schema answer a step carried, if any. */
146
+ structuredOutput() {
147
+ for (let i = this.steps.length - 1; i >= 0; i--) {
148
+ if (this.steps[i].structuredOutput !== undefined)
149
+ return this.steps[i].structuredOutput;
150
+ }
151
+ return undefined;
152
+ }
153
+ error() {
154
+ return this.failure;
155
+ }
156
+ finishReason() {
157
+ if (this.failure)
158
+ return 'error';
159
+ const last = this.steps.at(-1);
160
+ // The schema answer is the turn's reply, whatever stop reason carried it.
161
+ if (last?.structuredOutput !== undefined)
162
+ return 'stop';
163
+ return this.calls.length > 0 && !this.text() ? 'tool-calls' : normalizeStreamFinishReason(last?.finishReason ?? null);
164
+ }
165
+ /** The error the turn ended with, as a GMIError keeping the GMI's code. */
166
+ toError() {
167
+ if (!this.failure)
168
+ return undefined;
169
+ return new GMIError(this.failure.message, this.failure.code ?? GMIErrorCode.GMI_PROCESSING_ERROR, this.failure.details);
170
+ }
171
+ /**
172
+ * The turn as `generateText` reports a run: provider, model and response
173
+ * metadata from the last step, the text, the usage, the tool calls and the
174
+ * finish reason.
175
+ *
176
+ * @param transcriptDelta - The messages the turn added to the session store.
177
+ */
178
+ toGenerateTextResult(transcriptDelta) {
179
+ const last = this.steps.at(-1);
180
+ return {
181
+ provider: last?.providerId ?? '',
182
+ model: last?.modelId ?? '',
183
+ ...(last?.responseModel ? { responseModel: last.responseModel } : {}),
184
+ ...(last?.serviceTier ? { serviceTier: last.serviceTier } : {}),
185
+ ...(last?.providerMessageId ? { providerMessageId: last.providerMessageId } : {}),
186
+ ...(last?.cacheDiagnostics !== undefined ? { cacheDiagnostics: last.cacheDiagnostics } : {}),
187
+ text: this.text(),
188
+ usage: this.usage(),
189
+ toolCalls: this.toolCalls(),
190
+ finishReason: this.finishReason(),
191
+ ...(transcriptDelta ? { transcriptDelta } : {}),
192
+ };
193
+ }
194
+ }
195
+ function deferred() {
196
+ let resolve;
197
+ const promise = new Promise((r) => {
198
+ resolve = r;
199
+ });
200
+ return { promise, resolve };
201
+ }
202
+ /**
203
+ * A `StreamTextResult` over a GMI turn. The turn is drained eagerly, so every
204
+ * promise settles whether the caller iterates, stops iterating early, or never
205
+ * iterates; `textStream` and `fullStream` replay what arrived and wait for more.
206
+ *
207
+ * `textStream` yields every TEXT_DELTA as it arrives. `fullStream` maps
208
+ * TEXT_DELTA to `text`, TOOL_CALL_REQUEST to `tool-call`, TOOL_RESULT to
209
+ * `tool-result` and ERROR (or a thrown error) to a final `error` part. `text`
210
+ * is the latest step's text; after an error it is the text the failed step
211
+ * delivered, as streamText resolves it.
212
+ *
213
+ * @param turn - The turn's chunks.
214
+ * @param options - A caller-owned folder; see {@link GmiStreamOptions}.
215
+ */
216
+ export function streamFromGmiTurn(turn, options = {}) {
217
+ const folder = options.folder ?? new GmiTurnFolder();
218
+ const foldHere = !options.folder;
219
+ const texts = [];
220
+ const parts = [];
221
+ let done = false;
222
+ let waiters = [];
223
+ const wake = () => {
224
+ const pending = waiters;
225
+ waiters = [];
226
+ pending.forEach((w) => w());
227
+ };
228
+ const p = {
229
+ text: deferred(),
230
+ usage: deferred(),
231
+ toolCalls: deferred(),
232
+ provider: deferred(),
233
+ model: deferred(),
234
+ finishReason: deferred(),
235
+ responseModel: deferred(),
236
+ serviceTier: deferred(),
237
+ cacheDiagnostics: deferred(),
238
+ providerMessageId: deferred(),
239
+ };
240
+ void (async () => {
241
+ // The text the step in progress has delivered; reset at each step boundary.
242
+ let stepDelivered = '';
243
+ try {
244
+ for await (const chunk of turn) {
245
+ if (foldHere)
246
+ folder.push(chunk);
247
+ switch (chunk.type) {
248
+ case GMIOutputChunkType.TEXT_DELTA: {
249
+ const text = String(chunk.content ?? '');
250
+ stepDelivered += text;
251
+ texts.push(text);
252
+ parts.push({ type: 'text', text });
253
+ break;
254
+ }
255
+ case GMIOutputChunkType.STEP_FINISHED:
256
+ stepDelivered = '';
257
+ break;
258
+ case GMIOutputChunkType.TOOL_CALL_REQUEST:
259
+ for (const call of chunk.content ?? [])
260
+ parts.push({ type: 'tool-call', toolName: call.name, args: call.arguments });
261
+ break;
262
+ case GMIOutputChunkType.TOOL_RESULT: {
263
+ const r = chunk.content;
264
+ parts.push({ type: 'tool-result', toolName: r.name, result: r.isError ? { error: toolErrorMessage(r) } : r.result });
265
+ break;
266
+ }
267
+ case GMIOutputChunkType.ERROR:
268
+ parts.push({ type: 'error', error: folder.toError() ?? new Error(String(chunk.content)) });
269
+ break;
270
+ default:
271
+ break;
272
+ }
273
+ wake();
274
+ }
275
+ }
276
+ catch (error) {
277
+ folder.fail(error);
278
+ parts.push({ type: 'error', error: error instanceof Error ? error : new Error(String(error)) });
279
+ }
280
+ finally {
281
+ const last = folder.steps.at(-1);
282
+ p.text.resolve(folder.error() && stepDelivered ? stepDelivered : folder.text());
283
+ p.usage.resolve(folder.usage());
284
+ p.toolCalls.resolve(folder.toolCalls());
285
+ p.provider.resolve(last?.providerId ?? '');
286
+ p.model.resolve(last?.modelId ?? '');
287
+ p.finishReason.resolve(folder.finishReason());
288
+ p.responseModel.resolve(last?.responseModel);
289
+ p.serviceTier.resolve(last?.serviceTier);
290
+ p.cacheDiagnostics.resolve(last?.cacheDiagnostics ?? null);
291
+ p.providerMessageId.resolve(last?.providerMessageId ?? null);
292
+ done = true;
293
+ wake();
294
+ }
295
+ })();
296
+ function replay(buffer) {
297
+ return {
298
+ [Symbol.asyncIterator]() {
299
+ let i = 0;
300
+ return {
301
+ async next() {
302
+ for (;;) {
303
+ if (i < buffer.length)
304
+ return { value: buffer[i++], done: false };
305
+ if (done)
306
+ return { value: undefined, done: true };
307
+ await new Promise((resolve) => waiters.push(resolve));
308
+ }
309
+ },
310
+ async return() {
311
+ i = Number.MAX_SAFE_INTEGER;
312
+ return { value: undefined, done: true };
313
+ },
314
+ };
315
+ },
316
+ };
317
+ }
318
+ return {
319
+ textStream: replay(texts),
320
+ fullStream: replay(parts),
321
+ text: p.text.promise,
322
+ usage: p.usage.promise,
323
+ toolCalls: p.toolCalls.promise,
324
+ provider: p.provider.promise,
325
+ model: p.model.promise,
326
+ finishReason: p.finishReason.promise,
327
+ responseModel: p.responseModel.promise,
328
+ serviceTier: p.serviceTier.promise,
329
+ cacheDiagnostics: p.cacheDiagnostics.promise,
330
+ providerMessageId: p.providerMessageId.promise,
331
+ };
332
+ }
333
+ //# sourceMappingURL=gmiResults.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gmiResults.js","sourceRoot":"","sources":["../../../src/api/runtime/gmiResults.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,85 @@
1
+ import type { ZodType } from 'zod';
2
+ import { type GMIOutputChunk, type IGMI } from '../../cognition/substrate/IGMI.js';
3
+ import { type GenerateTextResult, type MessageContent, type TokenUsage } from '../generateText.js';
4
+ import type { StreamTextResult } from '../streamText.js';
5
+ import type { SessionHistoryBuffer } from '../sessionHistory.js';
6
+ import type { SessionTranscriptMessage } from '../sessionTranscript.js';
7
+ import type { AgentOptions } from '../agent.js';
8
+ import type { AgentOSUsageLedgerOptions } from './usageLedger.js';
9
+ import { GmiTurnFolder } from './gmiResults.js';
10
+ /** Serialises turns: `acquire()` resolves with a release function once every earlier holder released. */
11
+ export declare class TurnLock {
12
+ private tail;
13
+ acquire(): Promise<() => void>;
14
+ }
15
+ /** What one turn asks for beyond its input. */
16
+ export interface GmiTurnOptions {
17
+ /** Completion options for this turn (`metadata.options`): temperature, maxTokens, toolChoice, cacheDiagnostics, … */
18
+ options?: Record<string, unknown>;
19
+ /** Structured output: the gateway lowers it for each hop and suppresses tools. */
20
+ responseSchema?: ZodType;
21
+ schemaName?: string;
22
+ /** Label of the turn's block in the session store. */
23
+ blockLabel?: string;
24
+ }
25
+ /** What the GMI's hooks need to know about the turn about to run. */
26
+ export interface GmiTurnContext {
27
+ /** The turn's text input, for `onBeforeGeneration`'s `prompt` (undefined for multimodal input). */
28
+ prompt: string | undefined;
29
+ /** The `memoryProvider.getContext` block for this turn, inserted as a system message on every model call. */
30
+ memoryContext: string | undefined;
31
+ }
32
+ /** The GMI that serves one turn. */
33
+ export interface GmiForTurn {
34
+ gmi: IGMI;
35
+ /** Hands the turn's prompt and memory context to the GMI's hooks; called after the turn holds the lock, before it runs. */
36
+ prepare?(context: GmiTurnContext): void;
37
+ /** Releases a GMI made for this turn alone; called once the turn has ended. */
38
+ release?(): Promise<void>;
39
+ }
40
+ /** What a session hands the turn runner. */
41
+ export interface GmiSessionDeps {
42
+ sessionId: string;
43
+ opts: AgentOptions;
44
+ /** The GMI that serves the next turn: the session's own, or one made for the turn when the session keeps no history. */
45
+ gmiFor(): Promise<GmiForTurn>;
46
+ /** The user the GMI runs the turn as: it scopes cognitive memory, and the GMI passes it to the provider as its user field. */
47
+ userId: string;
48
+ /** False when cognitive memory supplies the memory context: `memoryProvider.getContext` is then skipped. */
49
+ useMemoryProviderContext: boolean;
50
+ /** The session store, or null when the turn keeps no history. */
51
+ history: SessionHistoryBuffer | null;
52
+ /** Usage ledger options for this turn's events (session id and source included). */
53
+ ledger?: AgentOSUsageLedgerOptions;
54
+ /** Receives the turn's usage once it ends, failed or not. */
55
+ onUsage(usage: TokenUsage): void;
56
+ lock: TurnLock;
57
+ }
58
+ /**
59
+ * Runs one GMI turn and yields its chunks, pushing each into `folder`, writing
60
+ * each finished step to the session store and each step's usage to the ledger.
61
+ * The caller folds the chunks (send) or streams them (stream).
62
+ *
63
+ * The turn reads the store's epoch and messages the moment it holds the lock,
64
+ * before it waits for its GMI or its memory context, so a clear or reseed during
65
+ * those waits makes the turn's writes no-ops, as an in-flight legacy send's are.
66
+ *
67
+ * @returns The messages the turn added to the store (or would have, with no history).
68
+ */
69
+ export declare function runGmiTurn(deps: GmiSessionDeps, input: MessageContent, turn: GmiTurnOptions, folder: GmiTurnFolder): AsyncGenerator<GMIOutputChunk, SessionTranscriptMessage[], undefined>;
70
+ /**
71
+ * `send()`: the whole turn, folded into a `GenerateTextResult` (with `object`
72
+ * when a schema was given). Rejects with the GMI's error, its code kept, when
73
+ * the turn failed; an error thrown before the turn ran (no provider or model
74
+ * resolves, the memory cannot be built) is rethrown as it was thrown.
75
+ */
76
+ export declare function sendGmiTurn(deps: GmiSessionDeps, input: MessageContent, turn: GmiTurnOptions): Promise<GenerateTextResult & {
77
+ object?: unknown;
78
+ }>;
79
+ /**
80
+ * `stream()`: the turn's chunks as a `StreamTextResult`. The promises settle
81
+ * after the turn is written to the session store, so a caller that awaits
82
+ * `text` and sends again finds the turn in the history.
83
+ */
84
+ export declare function streamGmiTurn(deps: GmiSessionDeps, input: MessageContent, turn: GmiTurnOptions): StreamTextResult;
85
+ //# sourceMappingURL=gmiSession.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gmiSession.d.ts","sourceRoot":"","sources":["../../../src/api/runtime/gmiSession.ts"],"names":[],"mappings":"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"}