@aid-framework/runtime 0.0.0 → 0.1.39

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 (188) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +53 -0
  3. package/dist/.tsbuildinfo +1 -0
  4. package/dist/agents/deep_agents.d.ts +78 -0
  5. package/dist/agents/deep_agents.d.ts.map +1 -0
  6. package/dist/agents/deep_agents.js +477 -0
  7. package/dist/agents/deep_agents.js.map +1 -0
  8. package/dist/agents/engine.d.ts +85 -0
  9. package/dist/agents/engine.d.ts.map +1 -0
  10. package/dist/agents/engine.js +129 -0
  11. package/dist/agents/engine.js.map +1 -0
  12. package/dist/agents/gateway_chat_model.d.ts +151 -0
  13. package/dist/agents/gateway_chat_model.d.ts.map +1 -0
  14. package/dist/agents/gateway_chat_model.js +350 -0
  15. package/dist/agents/gateway_chat_model.js.map +1 -0
  16. package/dist/agents/guardrail_middleware.d.ts +57 -0
  17. package/dist/agents/guardrail_middleware.d.ts.map +1 -0
  18. package/dist/agents/guardrail_middleware.js +85 -0
  19. package/dist/agents/guardrail_middleware.js.map +1 -0
  20. package/dist/agents/guardrails.d.ts +124 -0
  21. package/dist/agents/guardrails.d.ts.map +1 -0
  22. package/dist/agents/guardrails.js +336 -0
  23. package/dist/agents/guardrails.js.map +1 -0
  24. package/dist/agents/index.d.ts +15 -0
  25. package/dist/agents/index.d.ts.map +1 -0
  26. package/dist/agents/index.js +15 -0
  27. package/dist/agents/index.js.map +1 -0
  28. package/dist/agents/ir.d.ts +144 -0
  29. package/dist/agents/ir.d.ts.map +1 -0
  30. package/dist/agents/ir.js +513 -0
  31. package/dist/agents/ir.js.map +1 -0
  32. package/dist/agents/loop.d.ts +145 -0
  33. package/dist/agents/loop.d.ts.map +1 -0
  34. package/dist/agents/loop.js +1025 -0
  35. package/dist/agents/loop.js.map +1 -0
  36. package/dist/agents/memory.d.ts +115 -0
  37. package/dist/agents/memory.d.ts.map +1 -0
  38. package/dist/agents/memory.js +258 -0
  39. package/dist/agents/memory.js.map +1 -0
  40. package/dist/agents/state.d.ts +137 -0
  41. package/dist/agents/state.d.ts.map +1 -0
  42. package/dist/agents/state.js +255 -0
  43. package/dist/agents/state.js.map +1 -0
  44. package/dist/concurrency.d.ts +36 -0
  45. package/dist/concurrency.d.ts.map +1 -0
  46. package/dist/concurrency.js +86 -0
  47. package/dist/concurrency.js.map +1 -0
  48. package/dist/control.d.ts +116 -0
  49. package/dist/control.d.ts.map +1 -0
  50. package/dist/control.js +281 -0
  51. package/dist/control.js.map +1 -0
  52. package/dist/cost.d.ts +95 -0
  53. package/dist/cost.d.ts.map +1 -0
  54. package/dist/cost.js +161 -0
  55. package/dist/cost.js.map +1 -0
  56. package/dist/errors.d.ts +213 -0
  57. package/dist/errors.d.ts.map +1 -0
  58. package/dist/errors.js +316 -0
  59. package/dist/errors.js.map +1 -0
  60. package/dist/evals/dataset.d.ts +45 -0
  61. package/dist/evals/dataset.d.ts.map +1 -0
  62. package/dist/evals/dataset.js +147 -0
  63. package/dist/evals/dataset.js.map +1 -0
  64. package/dist/evals/gate.d.ts +236 -0
  65. package/dist/evals/gate.d.ts.map +1 -0
  66. package/dist/evals/gate.js +572 -0
  67. package/dist/evals/gate.js.map +1 -0
  68. package/dist/evals/metrics.d.ts +141 -0
  69. package/dist/evals/metrics.d.ts.map +1 -0
  70. package/dist/evals/metrics.js +364 -0
  71. package/dist/evals/metrics.js.map +1 -0
  72. package/dist/evals/predicate.d.ts +79 -0
  73. package/dist/evals/predicate.d.ts.map +1 -0
  74. package/dist/evals/predicate.js +178 -0
  75. package/dist/evals/predicate.js.map +1 -0
  76. package/dist/evals/runner.d.ts +94 -0
  77. package/dist/evals/runner.d.ts.map +1 -0
  78. package/dist/evals/runner.js +202 -0
  79. package/dist/evals/runner.js.map +1 -0
  80. package/dist/gateway.d.ts +118 -0
  81. package/dist/gateway.d.ts.map +1 -0
  82. package/dist/gateway.js +250 -0
  83. package/dist/gateway.js.map +1 -0
  84. package/dist/index.d.ts +83 -0
  85. package/dist/index.d.ts.map +1 -0
  86. package/dist/index.js +59 -0
  87. package/dist/index.js.map +1 -0
  88. package/dist/internal/json.d.ts +44 -0
  89. package/dist/internal/json.d.ts.map +1 -0
  90. package/dist/internal/json.js +90 -0
  91. package/dist/internal/json.js.map +1 -0
  92. package/dist/internal/text.d.ts +17 -0
  93. package/dist/internal/text.d.ts.map +1 -0
  94. package/dist/internal/text.js +22 -0
  95. package/dist/internal/text.js.map +1 -0
  96. package/dist/pipeline.d.ts +80 -0
  97. package/dist/pipeline.d.ts.map +1 -0
  98. package/dist/pipeline.js +159 -0
  99. package/dist/pipeline.js.map +1 -0
  100. package/dist/policy.d.ts +52 -0
  101. package/dist/policy.d.ts.map +1 -0
  102. package/dist/policy.js +199 -0
  103. package/dist/policy.js.map +1 -0
  104. package/dist/prompts.d.ts +86 -0
  105. package/dist/prompts.d.ts.map +1 -0
  106. package/dist/prompts.js +337 -0
  107. package/dist/prompts.js.map +1 -0
  108. package/dist/providers/base.d.ts +19 -0
  109. package/dist/providers/base.d.ts.map +1 -0
  110. package/dist/providers/base.js +13 -0
  111. package/dist/providers/base.js.map +1 -0
  112. package/dist/providers/fake.d.ts +98 -0
  113. package/dist/providers/fake.d.ts.map +1 -0
  114. package/dist/providers/fake.js +181 -0
  115. package/dist/providers/fake.js.map +1 -0
  116. package/dist/providers/http.d.ts +62 -0
  117. package/dist/providers/http.d.ts.map +1 -0
  118. package/dist/providers/http.js +245 -0
  119. package/dist/providers/http.js.map +1 -0
  120. package/dist/retrieval/chunking.d.ts +88 -0
  121. package/dist/retrieval/chunking.d.ts.map +1 -0
  122. package/dist/retrieval/chunking.js +188 -0
  123. package/dist/retrieval/chunking.js.map +1 -0
  124. package/dist/retrieval/citations.d.ts +98 -0
  125. package/dist/retrieval/citations.d.ts.map +1 -0
  126. package/dist/retrieval/citations.js +134 -0
  127. package/dist/retrieval/citations.js.map +1 -0
  128. package/dist/retrieval/connectors.d.ts +74 -0
  129. package/dist/retrieval/connectors.d.ts.map +1 -0
  130. package/dist/retrieval/connectors.js +218 -0
  131. package/dist/retrieval/connectors.js.map +1 -0
  132. package/dist/retrieval/embedding.d.ts +116 -0
  133. package/dist/retrieval/embedding.d.ts.map +1 -0
  134. package/dist/retrieval/embedding.js +282 -0
  135. package/dist/retrieval/embedding.js.map +1 -0
  136. package/dist/retrieval/gate.d.ts +52 -0
  137. package/dist/retrieval/gate.d.ts.map +1 -0
  138. package/dist/retrieval/gate.js +91 -0
  139. package/dist/retrieval/gate.js.map +1 -0
  140. package/dist/retrieval/hybrid.d.ts +76 -0
  141. package/dist/retrieval/hybrid.d.ts.map +1 -0
  142. package/dist/retrieval/hybrid.js +150 -0
  143. package/dist/retrieval/hybrid.js.map +1 -0
  144. package/dist/retrieval/metrics.d.ts +126 -0
  145. package/dist/retrieval/metrics.d.ts.map +1 -0
  146. package/dist/retrieval/metrics.js +200 -0
  147. package/dist/retrieval/metrics.js.map +1 -0
  148. package/dist/retrieval/pgvector.d.ts +62 -0
  149. package/dist/retrieval/pgvector.d.ts.map +1 -0
  150. package/dist/retrieval/pgvector.js +262 -0
  151. package/dist/retrieval/pgvector.js.map +1 -0
  152. package/dist/retrieval/rerank.d.ts +61 -0
  153. package/dist/retrieval/rerank.d.ts.map +1 -0
  154. package/dist/retrieval/rerank.js +105 -0
  155. package/dist/retrieval/rerank.js.map +1 -0
  156. package/dist/retrieval/retriever.d.ts +125 -0
  157. package/dist/retrieval/retriever.d.ts.map +1 -0
  158. package/dist/retrieval/retriever.js +281 -0
  159. package/dist/retrieval/retriever.js.map +1 -0
  160. package/dist/retrieval/stores.d.ts +106 -0
  161. package/dist/retrieval/stores.d.ts.map +1 -0
  162. package/dist/retrieval/stores.js +142 -0
  163. package/dist/retrieval/stores.js.map +1 -0
  164. package/dist/retrieval/types.d.ts +314 -0
  165. package/dist/retrieval/types.d.ts.map +1 -0
  166. package/dist/retrieval/types.js +388 -0
  167. package/dist/retrieval/types.js.map +1 -0
  168. package/dist/steps.d.ts +156 -0
  169. package/dist/steps.d.ts.map +1 -0
  170. package/dist/steps.js +199 -0
  171. package/dist/steps.js.map +1 -0
  172. package/dist/structured.d.ts +91 -0
  173. package/dist/structured.d.ts.map +1 -0
  174. package/dist/structured.js +155 -0
  175. package/dist/structured.js.map +1 -0
  176. package/dist/tools.d.ts +100 -0
  177. package/dist/tools.d.ts.map +1 -0
  178. package/dist/tools.js +201 -0
  179. package/dist/tools.js.map +1 -0
  180. package/dist/tracing.d.ts +104 -0
  181. package/dist/tracing.d.ts.map +1 -0
  182. package/dist/tracing.js +155 -0
  183. package/dist/tracing.js.map +1 -0
  184. package/dist/types.d.ts +240 -0
  185. package/dist/types.d.ts.map +1 -0
  186. package/dist/types.js +357 -0
  187. package/dist/types.js.map +1 -0
  188. package/package.json +80 -14
@@ -0,0 +1,145 @@
1
+ import { ConcurrencyLimiter } from '../concurrency.js';
2
+ import { Budget, type CostLedger } from '../cost.js';
3
+ import { ModelGateway } from '../gateway.js';
4
+ import { Principal } from '../policy.js';
5
+ import type { Provider } from '../providers/base.js';
6
+ import { type Tool } from '../tools.js';
7
+ import { Message } from '../types.js';
8
+ import { type GuardrailRecord } from './guardrails.js';
9
+ import { type AgentDefinition, type RuntimeSpec } from './ir.js';
10
+ import { type MemoryStore, ThreadMemory } from './memory.js';
11
+ import { type AgentCheckpoint, type HumanDecision, RunResult, type RunStatus, type StepRecord } from './state.js';
12
+ /**
13
+ * The native agent engine: one loop, three ways to leave it.
14
+ *
15
+ * The loop is a model call, its tool calls, the observations, repeat -- until the model
16
+ * answers without a tool call, until `maxSteps` is spent, until a budget is crossed, or
17
+ * until a human is needed. It consumes a `RuntimeSpec` (the IR seam in `agents/ir`) and
18
+ * calls models through `ModelGateway`, so fallback, cost accounting, and tracing behave
19
+ * exactly as they do for a pipeline step.
20
+ *
21
+ * Two control edges, and the difference is not cosmetic:
22
+ *
23
+ * **transfer** -- IR `handoffs`. Control *moves*. The caller does not resume; the target
24
+ * owns the rest of the turn and its answer is the run's answer. The target inherits the
25
+ * conversation but not the caller's instructions: a system prompt belongs to an agent, not
26
+ * to a transcript. The runtime primitive is `transfer`, and it never returns to the caller.
27
+ *
28
+ * **delegate** -- IR `delegates` (Deep Agents `subagents`). Control is *lent*. The delegate
29
+ * gets an isolated context -- its own system prompt and the one message it was handed,
30
+ * nothing else -- and returns exactly one observation. The caller resumes, sees that
31
+ * observation as a tool result, and authors the final answer. The runtime primitive is
32
+ * `delegate`.
33
+ *
34
+ * So the observable difference is who produces the final answer, and whose transcript
35
+ * contains the other's messages: after a transfer the answer is the target's and the
36
+ * caller's steps are a prefix of the target's run; after a delegate the answer is the
37
+ * caller's and the delegate's transcript is a separate, closed conversation.
38
+ *
39
+ * Budgets are ratified decision D1: crossing one is a hard failure. An agent that declares
40
+ * `onBudgetExhausted: degrade` instead steps **one** rung down its declared alias ladder,
41
+ * **once**, and both the step record and the ledger show the cheaper alias. It is never a
42
+ * retry loop: a degraded frame that still does not fit fails.
43
+ *
44
+ * Span recording (`agent_span`, HITL and guardrail events) is not ported here: decision D-7
45
+ * defers agent-level tracing to the layer that also gives this runtime a tracer seam, and no
46
+ * conformance case observes a span. The observable behaviours the Python module records
47
+ * spans *for* -- status, steps, transfer target, degradation -- are all in `RunResult`.
48
+ */
49
+ /** Namespacing for the control tools. A model cannot transfer by emitting prose. */
50
+ export declare const TRANSFER_PREFIX = "transfer_to_";
51
+ export declare const DELEGATE_PREFIX = "delegate_to_";
52
+ /** The one argument a control tool takes: what the other agent needs to know. */
53
+ export declare const CONTROL_ARGUMENT = "message";
54
+ /** A step record while the loop is still deciding what the step did. */
55
+ export type StepDraft = {
56
+ -readonly [K in keyof StepRecord]: StepRecord[K];
57
+ };
58
+ /** The memory context one agent turn resolved, and what it measured. */
59
+ export interface MemoryState {
60
+ thread: ThreadMemory | undefined;
61
+ context: string;
62
+ scopes: readonly string[];
63
+ entries: number;
64
+ tokens: number;
65
+ }
66
+ /** One agent's turn in progress: its own transcript, budget anchors, and steps. */
67
+ export interface Frame {
68
+ agent: AgentDefinition;
69
+ messages: Message[];
70
+ alias: string;
71
+ path: readonly string[];
72
+ step: number;
73
+ degraded: boolean;
74
+ memory: MemoryState;
75
+ memoryKey: string;
76
+ costAnchor: number;
77
+ tokenAnchor: number;
78
+ steps: StepDraft[];
79
+ resumedDecision: HumanDecision | undefined;
80
+ resumedChannel: string;
81
+ /**
82
+ * `input` runs once per frame, on the message the frame started from. A transferred
83
+ * target re-checks the conversation it inherited (its guardrails are its own), while a
84
+ * resumed frame does not: the checkpoint only exists because the input stage already ran.
85
+ */
86
+ inputChecked: boolean;
87
+ guardrails: GuardrailRecord[];
88
+ }
89
+ /** What a frame decided, before the run's totals are stamped on it. */
90
+ export interface Outcome {
91
+ status: RunStatus;
92
+ agentId: string;
93
+ answer: string;
94
+ steps: readonly StepDraft[];
95
+ path: readonly string[];
96
+ checkpoint: AgentCheckpoint | undefined;
97
+ guardrails: readonly GuardrailRecord[];
98
+ }
99
+ export declare function outcomeOf(init: {
100
+ status: RunStatus;
101
+ agentId: string;
102
+ answer?: string;
103
+ steps: readonly StepDraft[];
104
+ path: readonly string[];
105
+ checkpoint?: AgentCheckpoint;
106
+ guardrails: readonly GuardrailRecord[];
107
+ }): Outcome;
108
+ /** Runs the IR's agents on the native engine. */
109
+ export declare class AgentRuntime {
110
+ #private;
111
+ constructor(spec: RuntimeSpec, gateway: ModelGateway, options?: {
112
+ readonly tools?: Iterable<Tool>;
113
+ readonly stores?: Readonly<Record<string, MemoryStore>> | ReadonlyMap<string, MemoryStore>;
114
+ readonly memoryStore?: MemoryStore;
115
+ readonly limiter?: ConcurrencyLimiter;
116
+ });
117
+ /**
118
+ * Build a runtime from an emitted IR document.
119
+ *
120
+ * The IR's `deployments[].concurrency` becomes one limiter shared by the gateway and the
121
+ * tool executor, so model calls, tool calls, and delegation all draw from the same budget
122
+ * rather than running two independent pools.
123
+ */
124
+ static fromIr(document: Record<string, unknown>, options: {
125
+ readonly providers: Readonly<Record<string, Provider>>;
126
+ readonly tools?: Iterable<Tool>;
127
+ readonly stores?: Readonly<Record<string, MemoryStore>> | ReadonlyMap<string, MemoryStore>;
128
+ readonly memoryStore?: MemoryStore;
129
+ readonly ledger?: CostLedger;
130
+ readonly budget?: Budget;
131
+ }): AgentRuntime;
132
+ get spec(): RuntimeSpec;
133
+ get gateway(): ModelGateway;
134
+ /** Run `agentId` to a stop condition on one user message. */
135
+ run(agentId: string, text: string, options?: {
136
+ readonly principal?: Principal;
137
+ readonly memoryKey?: string;
138
+ readonly conversation?: readonly Message[];
139
+ }): Promise<RunResult>;
140
+ /** Continue a paused run from its checkpoint, with a human's answer. */
141
+ resume(checkpoint: AgentCheckpoint, decision: HumanDecision, options?: {
142
+ readonly principal?: Principal;
143
+ }): Promise<RunResult>;
144
+ }
145
+ //# sourceMappingURL=loop.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loop.d.ts","sourceRoot":"","sources":["../../src/agents/loop.ts"],"names":[],"mappings":"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"}