@agenticprimitives/model-client 0.0.0-alpha.0 → 0.0.0-stage

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,17 +1,3 @@
1
- # @agenticprimitives/model-client
1
+ # Temporary Holding Version
2
2
 
3
- The typed client of the AP Model Gateway (spec 434), and the bridges a harness uses to move its planner, composer,
4
- structured calls and text streams onto the gateway without touching a call site.
5
-
6
- ```ts
7
- import { createModelClient } from '@agenticprimitives/model-client';
8
- import { plannerFromModels, composerFromModels } from '@agenticprimitives/model-client/orchestration';
9
-
10
- const models = createModelClient({ baseUrl: env.INFERENCE_URL, credential: { kind: 'app-key', key: env.INFERENCE_APP_KEY } });
11
- const planner = plannerFromModels(models, { profile: 'planner-fast', purpose: 'plan', context: () => ({ runRef }), onReceipt: (r) => trace.receiptRef = r.id });
12
- const composer = composerFromModels(models, { profile: 'composer-default', purpose: 'compose' });
13
- ```
14
-
15
- A profile, never a model. The gateway establishes the principal from the credential; what the client says it acts for
16
- is recorded as asserted. Every answer carries the receipt that says which profile version, provider, model and attempt
17
- produced it, and what it cost.
3
+ This version is a temporary placeholder for this package. An operational version to replace this has been submitted for review and is awaiting a staged release.
package/package.json CHANGED
@@ -1,34 +1,6 @@
1
1
  {
2
2
  "name": "@agenticprimitives/model-client",
3
- "version": "0.0.0-alpha.0",
4
- "description": "The typed client of the AP Model Gateway (spec 434): models.generate / stream / listProfiles under an app key or a session wire, and the orchestration bridges that let a harness swap planner, composer, structured-call and text-stream factories onto the gateway by profile — never by model.",
5
- "homepage": "https://agenticprimitives.dev",
6
- "bugs": { "url": "https://github.com/agentictrustlabs/agenticprimitives/issues" },
7
- "author": { "name": "Agentic Trust Labs", "url": "https://agenticprimitives.dev" },
8
- "type": "module",
9
- "exports": {
10
- ".": { "types": "./dist/index.d.ts", "import": "./dist/index.js" },
11
- "./orchestration": { "types": "./dist/orchestration.d.ts", "import": "./dist/orchestration.js" }
12
- },
13
- "scripts": {
14
- "build": "tsc -p tsconfig.build.json",
15
- "typecheck": "tsc -p tsconfig.json --noEmit",
16
- "test": "vitest run",
17
- "test:unit": "vitest run test/unit --passWithNoTests",
18
- "test:watch": "vitest",
19
- "clean": "rm -rf dist"
20
- },
21
- "files": ["LICENSE", "dist", "spec.md", "README.md"],
22
- "dependencies": {
23
- "@agenticprimitives/model-gateway": "workspace:*",
24
- "@agenticprimitives/orchestration": "workspace:*",
25
- "@agenticprimitives/orchestration-anthropic": "workspace:*",
26
- "@agenticprimitives/orchestration-openai-compat": "workspace:*",
27
- "@agenticprimitives/types": "workspace:*"
28
- },
29
- "devDependencies": { "vitest": "^4.1.11" },
30
- "publishConfig": { "access": "public" },
31
- "repository": { "type": "git", "url": "git+https://github.com/agentictrustlabs/agenticprimitives.git", "directory": "packages/model-client" },
32
- "license": "MIT",
33
- "keywords": ["agentic", "model-gateway", "llm-client", "inference", "orchestration"]
34
- }
3
+ "version": "0.0.0-stage",
4
+ "stub": true,
5
+ "description": "Temporary package placeholder for staged publishing"
6
+ }
package/LICENSE DELETED
@@ -1,21 +0,0 @@
1
- MIT License
2
-
3
- Copyright (c) 2026 Agentic Trust Labs
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining a copy
6
- of this software and associated documentation files (the "Software"), to deal
7
- in the Software without restriction, including without limitation the rights
8
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- copies of the Software, and to permit persons to whom the Software is
10
- furnished to do so, subject to the following conditions:
11
-
12
- The above copyright notice and this permission notice shall be included in all
13
- copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- SOFTWARE.
package/dist/client.d.ts DELETED
@@ -1,48 +0,0 @@
1
- import type { Address } from '@agenticprimitives/types';
2
- import { type GenerateRequestV1, type GenerateResponseV1, type GatewayRefusalV1, type StreamEventV1, type ModelProfileV1 } from '@agenticprimitives/model-gateway';
3
- export declare const PACKAGE_NAME: "@agenticprimitives/model-client";
4
- export declare const PACKAGE_STATUS: "w1-client";
5
- export declare const SPEC_REF: "ap-town/specs/434-ap-model-gateway-and-the-town-pulse.md";
6
- export type ModelCredentialV1 = {
7
- kind: 'app-key';
8
- key: string;
9
- }
10
- /** Caller class (b): the caller signs each request's digest with its delegate key over a wire the gateway verifies. */
11
- | {
12
- kind: 'session-wire';
13
- wire: unknown;
14
- signDigest: (digest: `0x${string}`) => Promise<`0x${string}`>;
15
- delegate: Address;
16
- };
17
- export interface ModelClientOpts {
18
- /** The inference Worker's origin (`https://inference.<town>`); operator configuration, never a literal in code. */
19
- baseUrl: string;
20
- credential: ModelCredentialV1;
21
- fetchImpl?: typeof fetch;
22
- /** Defaults merged into every request's `context` (an estate's runtime sets `agent` per run, never here). */
23
- context?: {
24
- purpose?: string;
25
- };
26
- timeoutMs?: number;
27
- }
28
- export declare class ModelClientError extends Error {
29
- readonly status: number;
30
- readonly refusal?: GatewayRefusalV1;
31
- constructor(status: number, message: string, refusal?: GatewayRefusalV1);
32
- }
33
- export interface ProfileListingV1 {
34
- profiles: Array<Pick<ModelProfileV1, 'id' | 'servesCapability' | 'maxOutputTokens' | 'privacy'> & {
35
- version: string;
36
- }>;
37
- principal: Address;
38
- }
39
- export interface ModelClient {
40
- generate(req: GenerateRequestV1): Promise<GenerateResponseV1>;
41
- /** Deltas as they arrive; resolves with the same response the blocking call returns (the receipt on it). */
42
- stream(req: GenerateRequestV1, onDelta: (text: string) => void): Promise<GenerateResponseV1>;
43
- listProfiles(): Promise<ProfileListingV1>;
44
- }
45
- /** Parse an SSE body into `StreamEventV1`s. Exported for the Worker's tests and any other reader of the stream. */
46
- export declare function readEventStream(body: ReadableStream<Uint8Array>, onEvent: (e: StreamEventV1) => void): Promise<void>;
47
- export declare function createModelClient(opts: ModelClientOpts): ModelClient;
48
- //# sourceMappingURL=client.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAa,KAAK,iBAAiB,EAAE,KAAK,kBAAkB,EAAE,KAAK,gBAAgB,EAAE,KAAK,aAAa,EAAE,KAAK,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAE9K,eAAO,MAAM,YAAY,EAAG,iCAA0C,CAAC;AACvE,eAAO,MAAM,cAAc,EAAG,WAAoB,CAAC;AACnD,eAAO,MAAM,QAAQ,EAAG,0DAAmE,CAAC;AAE5F,MAAM,MAAM,iBAAiB,GACzB;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE;AAClC,uHAAuH;GACrH;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,IAAI,EAAE,OAAO,CAAC;IAAC,UAAU,EAAE,CAAC,MAAM,EAAE,KAAK,MAAM,EAAE,KAAK,OAAO,CAAC,KAAK,MAAM,EAAE,CAAC,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAA;CAAE,CAAC;AAE9H,MAAM,WAAW,eAAe;IAC9B,mHAAmH;IACnH,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,iBAAiB,CAAC;IAC9B,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;IACzB,6GAA6G;IAC7G,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,qBAAa,gBAAiB,SAAQ,KAAK;IACzC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,CAAC,EAAE,gBAAgB,CAAC;gBACxB,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,gBAAgB;CACxE;AAED,MAAM,WAAW,gBAAgB;IAAG,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,GAAG,kBAAkB,GAAG,iBAAiB,GAAG,SAAS,CAAC,GAAG;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAAC,SAAS,EAAE,OAAO,CAAA;CAAE;AAEhL,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,GAAG,EAAE,iBAAiB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAC9D,4GAA4G;IAC5G,MAAM,CAAC,GAAG,EAAE,iBAAiB,EAAE,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAC7F,YAAY,IAAI,OAAO,CAAC,gBAAgB,CAAC,CAAC;CAC3C;AAED,mHAAmH;AACnH,wBAAsB,eAAe,CAAC,IAAI,EAAE,cAAc,CAAC,UAAU,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,aAAa,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAiB1H;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,eAAe,GAAG,WAAW,CAwDpE"}
package/dist/client.js DELETED
@@ -1,125 +0,0 @@
1
- import { isRefusal } from '@agenticprimitives/model-gateway';
2
- export const PACKAGE_NAME = '@agenticprimitives/model-client';
3
- export const PACKAGE_STATUS = 'w1-client';
4
- export const SPEC_REF = 'ap-town/specs/434-ap-model-gateway-and-the-town-pulse.md';
5
- export class ModelClientError extends Error {
6
- status;
7
- refusal;
8
- constructor(status, message, refusal) { super(message); this.name = 'ModelClientError'; this.status = status; if (refusal)
9
- this.refusal = refusal; }
10
- }
11
- /** Parse an SSE body into `StreamEventV1`s. Exported for the Worker's tests and any other reader of the stream. */
12
- export async function readEventStream(body, onEvent) {
13
- const reader = body.getReader();
14
- const dec = new TextDecoder();
15
- let buf = '';
16
- for (;;) {
17
- const { done, value } = await reader.read();
18
- if (done)
19
- break;
20
- buf += dec.decode(value, { stream: true });
21
- let sep;
22
- while ((sep = buf.indexOf('\n\n')) !== -1) {
23
- const frame = buf.slice(0, sep);
24
- buf = buf.slice(sep + 2);
25
- for (const line of frame.split('\n')) {
26
- if (!line.startsWith('data:'))
27
- continue;
28
- const data = line.slice(5).trim();
29
- if (!data || data === '[DONE]')
30
- continue;
31
- try {
32
- onEvent(JSON.parse(data));
33
- }
34
- catch {
35
- onEvent({ type: 'error', message: `unreadable stream frame: ${data.slice(0, 120)}` });
36
- }
37
- }
38
- }
39
- }
40
- }
41
- export function createModelClient(opts) {
42
- const f = opts.fetchImpl ?? fetch;
43
- const base = opts.baseUrl.replace(/\/+$/, '');
44
- const withContext = (req) => ({ ...req, context: { ...(opts.context?.purpose ? { purpose: opts.context.purpose } : {}), ...req.context } });
45
- async function headersFor(body, path) {
46
- const h = { 'content-type': 'application/json', accept: 'application/json' };
47
- if (opts.credential.kind === 'app-key')
48
- h.authorization = `Bearer ${opts.credential.key}`;
49
- else {
50
- // Caller class (b): the A2A-Session scheme over the wire (spec 372 S3c) — the digest covers method + body.
51
- const digest = await sha256Hex(`model.generate\n${path}\n${body}`);
52
- const sig = await opts.credential.signDigest(digest);
53
- h.authorization = `A2A-Session ${btoa(JSON.stringify({ wire: opts.credential.wire, delegate: opts.credential.delegate, digest, signature: sig, method: 'model.generate' }))}`;
54
- }
55
- return h;
56
- }
57
- async function send(path, body, accept) {
58
- const raw = JSON.stringify(body);
59
- const headers = await headersFor(raw, path);
60
- if (accept)
61
- headers.accept = accept;
62
- const ctl = new AbortController();
63
- const t = setTimeout(() => ctl.abort(), opts.timeoutMs ?? 120_000);
64
- try {
65
- return await f(`${base}${path}`, { method: 'POST', headers, body: raw, signal: ctl.signal });
66
- }
67
- finally {
68
- clearTimeout(t);
69
- }
70
- }
71
- async function refusalOf(res) {
72
- const text = await res.text();
73
- let parsed = null;
74
- try {
75
- parsed = JSON.parse(text);
76
- }
77
- catch { /* not json */ }
78
- if (isRefusal(parsed))
79
- throw new ModelClientError(res.status, parsed.detail, parsed);
80
- throw new ModelClientError(res.status, `the model gateway answered ${res.status}${text ? `: ${text.slice(0, 200)}` : ''}`);
81
- }
82
- return {
83
- async generate(req) {
84
- const res = await send('/v1/generate', withContext({ ...req, stream: false }));
85
- if (!res.ok)
86
- return refusalOf(res);
87
- const out = (await res.json());
88
- if (isRefusal(out))
89
- throw new ModelClientError(200, out.detail, out);
90
- return out;
91
- },
92
- async stream(req, onDelta) {
93
- const res = await send('/v1/generate', withContext({ ...req, stream: true }), 'text/event-stream');
94
- if (!res.ok)
95
- return refusalOf(res);
96
- if (!res.body)
97
- throw new ModelClientError(res.status, 'the model gateway streamed no body');
98
- let done;
99
- let error;
100
- await readEventStream(res.body, (e) => { if (e.type === 'delta')
101
- onDelta(e.text);
102
- else if (e.type === 'done')
103
- done = e.response;
104
- else if (e.type === 'error')
105
- error = e; });
106
- if (done)
107
- return done;
108
- if (error && error.type === 'error')
109
- throw new ModelClientError(502, error.message);
110
- throw new ModelClientError(502, 'the stream ended without a done event');
111
- },
112
- async listProfiles() {
113
- const headers = await headersFor('', '/v1/models');
114
- const res = await f(`${base}/v1/models`, { headers });
115
- if (!res.ok)
116
- return refusalOf(res);
117
- return (await res.json());
118
- },
119
- };
120
- }
121
- async function sha256Hex(s) {
122
- const h = await crypto.subtle.digest('SHA-256', new TextEncoder().encode(s));
123
- return `0x${Array.from(new Uint8Array(h)).map((b) => b.toString(16).padStart(2, '0')).join('')}`;
124
- }
125
- //# sourceMappingURL=client.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts DELETED
@@ -1,5 +0,0 @@
1
- export { PACKAGE_NAME, PACKAGE_STATUS, SPEC_REF, createModelClient, readEventStream, ModelClientError } from './client.js';
2
- export type { ModelClient, ModelClientOpts, ModelCredentialV1, ProfileListingV1 } from './client.js';
3
- export { anthropicLikeOverGateway, openAiCompatLikeOverGateway, toAnthropicMessage, toChatCompletion, plannerFromModels, plannerFromModelsOpenAi, composerFromModels, composerFromModelsOpenAi, structuredCallFromModels, textStreamFromModels, logprobChoiceFromModels, } from './orchestration.js';
4
- export type { BridgeOpts, PlannerBridgeOpts, ComposerBridgeOpts, StructuredBridgeOpts } from './orchestration.js';
5
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,QAAQ,EAAE,iBAAiB,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC3H,YAAY,EAAE,WAAW,EAAE,eAAe,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AACrG,OAAO,EACL,wBAAwB,EAAE,2BAA2B,EAAE,kBAAkB,EAAE,gBAAgB,EAC3F,iBAAiB,EAAE,uBAAuB,EAAE,kBAAkB,EAAE,wBAAwB,EAAE,wBAAwB,EAAE,oBAAoB,EAAE,uBAAuB,GAClK,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EAAE,UAAU,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC"}
package/dist/index.js DELETED
@@ -1,5 +0,0 @@
1
- // @agenticprimitives/model-client — spec 434: the typed client of the town's model gateway, and the bridges that let
2
- // the harness swap factories, not call sites. Names a profile and a purpose; never a model, never who it is.
3
- export { PACKAGE_NAME, PACKAGE_STATUS, SPEC_REF, createModelClient, readEventStream, ModelClientError } from './client.js';
4
- export { anthropicLikeOverGateway, openAiCompatLikeOverGateway, toAnthropicMessage, toChatCompletion, plannerFromModels, plannerFromModelsOpenAi, composerFromModels, composerFromModelsOpenAi, structuredCallFromModels, textStreamFromModels, logprobChoiceFromModels, } from './orchestration.js';
5
- //# sourceMappingURL=index.js.map
package/dist/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,qHAAqH;AACrH,6GAA6G;AAC7G,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,QAAQ,EAAE,iBAAiB,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE3H,OAAO,EACL,wBAAwB,EAAE,2BAA2B,EAAE,kBAAkB,EAAE,gBAAgB,EAC3F,iBAAiB,EAAE,uBAAuB,EAAE,kBAAkB,EAAE,wBAAwB,EAAE,wBAAwB,EAAE,oBAAoB,EAAE,uBAAuB,GAClK,MAAM,oBAAoB,CAAC"}
@@ -1,55 +0,0 @@
1
- import type { Planner, AnswerComposer, StructuredCallLike, LogprobChoiceLike } from '@agenticprimitives/orchestration';
2
- import type { AnthropicLike, AnthropicMessage } from '@agenticprimitives/orchestration-anthropic';
3
- import type { OpenAiCompatLike, OpenAiCompatChatCompletion } from '@agenticprimitives/orchestration-openai-compat';
4
- import { type TextStreamCall } from '@agenticprimitives/orchestration-openai-compat';
5
- import type { GenerateResponseV1, ReceiptSummaryV1 } from '@agenticprimitives/model-gateway';
6
- import type { ModelClient } from './client.js';
7
- export interface BridgeOpts {
8
- /** The profile every call through this bridge names. The adapter's `model` option is ignored in favour of it. */
9
- profile: string;
10
- /** The caller's word for why (`plan`, `compose`, `judge`, `selection`, `answer-stream`); on every receipt. */
11
- purpose: string;
12
- /** Run attribution, ASSERTED (G3): the runtime sets these per run; the gateway records them and decides nothing by them. */
13
- context?: () => {
14
- runRef?: string;
15
- stepRef?: string;
16
- agent?: `0x${string}`;
17
- };
18
- /** Every answered call's receipt — what the runtime puts on `ModelCallV1.receiptRef` (and cost, attempt, fallbackOf). */
19
- onReceipt?: (r: ReceiptSummaryV1) => void;
20
- }
21
- /** An `AnthropicLike` whose `messages.create` goes through the gateway under `opts.profile`. */
22
- export declare function anthropicLikeOverGateway(models: ModelClient, opts: BridgeOpts): AnthropicLike;
23
- export declare function toAnthropicMessage(res: GenerateResponseV1): AnthropicMessage;
24
- /** An `OpenAiCompatLike` whose `chat.completions.create` goes through the gateway under `opts.profile`. */
25
- export declare function openAiCompatLikeOverGateway(models: ModelClient, opts: BridgeOpts): OpenAiCompatLike;
26
- export declare function toChatCompletion(res: GenerateResponseV1): OpenAiCompatChatCompletion;
27
- export interface PlannerBridgeOpts extends BridgeOpts {
28
- systemPrompt?: string;
29
- maxTokens?: number;
30
- }
31
- /** The Anthropic planner's prompt and tool-use parsing, through the gateway. The profile decides the provider. */
32
- export declare function plannerFromModels(models: ModelClient, opts: PlannerBridgeOpts): Planner;
33
- /** The OpenAI-compatible planner's prompt (the Groq/Gemini shape), through the gateway. */
34
- export declare function plannerFromModelsOpenAi(models: ModelClient, opts: PlannerBridgeOpts): Planner;
35
- export interface ComposerBridgeOpts extends BridgeOpts {
36
- systemPrompt?: string;
37
- maxTokens?: number;
38
- maxEvidenceChars?: number;
39
- }
40
- export declare function composerFromModels(models: ModelClient, opts: ComposerBridgeOpts): AnswerComposer;
41
- export declare function composerFromModelsOpenAi(models: ModelClient, opts: ComposerBridgeOpts): AnswerComposer;
42
- export interface StructuredBridgeOpts extends BridgeOpts {
43
- maxTokens?: number;
44
- label?: string;
45
- }
46
- export declare function structuredCallFromModels(models: ModelClient, opts: StructuredBridgeOpts): StructuredCallLike;
47
- /** A text stream through the gateway: deltas as they arrive, the receipt when done. */
48
- export declare function textStreamFromModels(models: ModelClient, opts: BridgeOpts & {
49
- maxTokens?: number;
50
- }): TextStreamCall;
51
- /** A letter choice through the gateway. The contract carries no logprobs (not in v1), so the chosen letter is
52
- * reported at probability 1 and the others absent — a DETERMINISTIC choice, said so on the decision model's name.
53
- * A judge that needs a distribution keeps the direct `createOpenAiCompatLogprobChoice` until profiles carry `logprobs`. */
54
- export declare function logprobChoiceFromModels(models: ModelClient, opts: BridgeOpts): LogprobChoiceLike;
55
- //# sourceMappingURL=orchestration.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"orchestration.d.ts","sourceRoot":"","sources":["../src/orchestration.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AACvH,OAAO,KAAK,EAAE,aAAa,EAAgC,gBAAgB,EAAE,MAAM,4CAA4C,CAAC;AAEhI,OAAO,KAAK,EAAE,gBAAgB,EAAgC,0BAA0B,EAAE,MAAM,gDAAgD,CAAC;AACjJ,OAAO,EAA2F,KAAK,cAAc,EAAE,MAAM,gDAAgD,CAAC;AAC9K,OAAO,KAAK,EAAqB,kBAAkB,EAAE,gBAAgB,EAAa,MAAM,kCAAkC,CAAC;AAC3H,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/C,MAAM,WAAW,UAAU;IACzB,iHAAiH;IACjH,OAAO,EAAE,MAAM,CAAC;IAChB,8GAA8G;IAC9G,OAAO,EAAE,MAAM,CAAC;IAChB,4HAA4H;IAC5H,OAAO,CAAC,EAAE,MAAM;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,KAAK,MAAM,EAAE,CAAA;KAAE,CAAC;IAC7E,yHAAyH;IACzH,SAAS,CAAC,EAAE,CAAC,CAAC,EAAE,gBAAgB,KAAK,IAAI,CAAC;CAC3C;AAID,gGAAgG;AAChG,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,UAAU,GAAG,aAAa,CAgB7F;AACD,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,kBAAkB,GAAG,gBAAgB,CAM5E;AAED,2GAA2G;AAC3G,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,UAAU,GAAG,gBAAgB,CAiBnG;AACD,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,kBAAkB,GAAG,0BAA0B,CAKpF;AAID,MAAM,WAAW,iBAAkB,SAAQ,UAAU;IAAG,YAAY,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE;AACnG,kHAAkH;AAClH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAEvF;AACD,2FAA2F;AAC3F,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAE7F;AACD,MAAM,WAAW,kBAAmB,SAAQ,UAAU;IAAG,YAAY,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAAE;AAC/H,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,kBAAkB,GAAG,cAAc,CAEhG;AACD,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,kBAAkB,GAAG,cAAc,CAEtG;AACD,MAAM,WAAW,oBAAqB,SAAQ,UAAU;IAAG,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE;AAC/F,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,oBAAoB,GAAG,kBAAkB,CAE5G;AACD,uFAAuF;AACvF,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,UAAU,GAAG;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,cAAc,CAMnH;AACD;;4HAE4H;AAC5H,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,UAAU,GAAG,iBAAiB,CAOhG"}
@@ -1,90 +0,0 @@
1
- import { createAnthropicPlanner, createAnthropicComposer } from '@agenticprimitives/orchestration-anthropic';
2
- import { createOpenAiCompatPlanner, createOpenAiCompatComposer, createOpenAiCompatStructuredCall } from '@agenticprimitives/orchestration-openai-compat';
3
- const ctxOf = (o) => ({ purpose: o.purpose, ...(o.context?.() ?? {}) });
4
- /** An `AnthropicLike` whose `messages.create` goes through the gateway under `opts.profile`. */
5
- export function anthropicLikeOverGateway(models, opts) {
6
- return {
7
- messages: {
8
- async create(params) {
9
- const messages = [...(params.system ? [{ role: 'system', content: params.system }] : []), ...params.messages.map((m) => ({ role: m.role, content: m.content }))];
10
- const toolChoice = params.tool_choice?.type === 'any' ? 'required' : params.tool_choice?.type === 'tool' ? { name: params.tool_choice.name } : params.tool_choice?.type === 'auto' ? 'auto' : undefined;
11
- const res = await models.generate({
12
- profile: opts.profile, messages, maxOutputTokens: params.max_tokens,
13
- ...(params.tools ? { tools: params.tools.map((t) => ({ name: t.name, ...(t.description ? { description: t.description } : {}), inputSchema: t.input_schema })) } : {}),
14
- ...(toolChoice ? { toolChoice } : {}), context: ctxOf(opts),
15
- });
16
- opts.onReceipt?.(res.receipt);
17
- return toAnthropicMessage(res);
18
- },
19
- },
20
- };
21
- }
22
- export function toAnthropicMessage(res) {
23
- return {
24
- content: [...(res.content ? [{ type: 'text', text: res.content }] : []), ...res.toolCalls.map((c, i) => ({ type: 'tool_use', id: c.id ?? `toolu_${res.receipt.id}_${i}`, name: c.name, input: c.args }))],
25
- stop_reason: res.stopReason === 'tool' ? 'tool_use' : res.stopReason === 'length' ? 'max_tokens' : res.stopReason === 'filtered' ? 'refusal' : 'end_turn',
26
- usage: { input_tokens: res.usage.tokensIn - (res.usage.cachedIn ?? 0), output_tokens: res.usage.tokensOut, ...(res.usage.cachedIn ? { cache_read_input_tokens: res.usage.cachedIn } : {}) },
27
- };
28
- }
29
- /** An `OpenAiCompatLike` whose `chat.completions.create` goes through the gateway under `opts.profile`. */
30
- export function openAiCompatLikeOverGateway(models, opts) {
31
- return {
32
- chat: {
33
- completions: {
34
- async create(params) {
35
- const toolChoice = params.tool_choice === undefined ? undefined : typeof params.tool_choice === 'string' ? params.tool_choice : { name: params.tool_choice.function.name };
36
- const res = await models.generate({
37
- profile: opts.profile, messages: params.messages.map((m) => ({ role: m.role, content: m.content })), maxOutputTokens: params.max_completion_tokens ?? params.max_tokens,
38
- ...(params.tools ? { tools: params.tools.map((t) => ({ name: t.function.name, ...(t.function.description ? { description: t.function.description } : {}), inputSchema: t.function.parameters })) } : {}),
39
- ...(toolChoice ? { toolChoice } : {}), ...(params.temperature !== undefined ? { temperature: params.temperature } : {}), context: ctxOf(opts),
40
- });
41
- opts.onReceipt?.(res.receipt);
42
- return toChatCompletion(res);
43
- },
44
- },
45
- },
46
- };
47
- }
48
- export function toChatCompletion(res) {
49
- return {
50
- choices: [{ message: { role: 'assistant', content: res.content || (res.toolCalls.length ? null : ''), ...(res.toolCalls.length ? { tool_calls: res.toolCalls.map((c, i) => ({ ...(c.id ? { id: c.id } : { id: `call_${res.receipt.id}_${i}` }), type: 'function', function: { name: c.name, arguments: JSON.stringify(c.args) } })) } : {}) }, finish_reason: res.stopReason === 'tool' ? 'tool_calls' : res.stopReason === 'length' ? 'length' : res.stopReason === 'filtered' ? 'content_filter' : 'stop' }],
51
- usage: { prompt_tokens: res.usage.tokensIn, completion_tokens: res.usage.tokensOut, total_tokens: res.usage.tokensIn + res.usage.tokensOut, ...(res.usage.cachedIn ? { prompt_tokens_details: { cached_tokens: res.usage.cachedIn } } : {}), ...(res.usage.reasoningOut ? { completion_tokens_details: { reasoning_tokens: res.usage.reasoningOut } } : {}) },
52
- };
53
- }
54
- /** The Anthropic planner's prompt and tool-use parsing, through the gateway. The profile decides the provider. */
55
- export function plannerFromModels(models, opts) {
56
- return createAnthropicPlanner({ client: anthropicLikeOverGateway(models, opts), model: opts.profile, ...(opts.systemPrompt ? { systemPrompt: opts.systemPrompt } : {}), ...(opts.maxTokens ? { maxTokens: opts.maxTokens } : {}) });
57
- }
58
- /** The OpenAI-compatible planner's prompt (the Groq/Gemini shape), through the gateway. */
59
- export function plannerFromModelsOpenAi(models, opts) {
60
- return createOpenAiCompatPlanner({ client: openAiCompatLikeOverGateway(models, opts), model: opts.profile, ...(opts.systemPrompt ? { systemPrompt: opts.systemPrompt } : {}), ...(opts.maxTokens ? { maxTokens: opts.maxTokens } : {}) });
61
- }
62
- export function composerFromModels(models, opts) {
63
- return createAnthropicComposer({ client: anthropicLikeOverGateway(models, opts), model: opts.profile, ...(opts.systemPrompt ? { systemPrompt: opts.systemPrompt } : {}), ...(opts.maxTokens ? { maxTokens: opts.maxTokens } : {}), ...(opts.maxEvidenceChars ? { maxEvidenceChars: opts.maxEvidenceChars } : {}) });
64
- }
65
- export function composerFromModelsOpenAi(models, opts) {
66
- return createOpenAiCompatComposer({ client: openAiCompatLikeOverGateway(models, opts), model: opts.profile, ...(opts.systemPrompt ? { systemPrompt: opts.systemPrompt } : {}), ...(opts.maxTokens ? { maxTokens: opts.maxTokens } : {}), ...(opts.maxEvidenceChars ? { maxEvidenceChars: opts.maxEvidenceChars } : {}) });
67
- }
68
- export function structuredCallFromModels(models, opts) {
69
- return createOpenAiCompatStructuredCall({ client: openAiCompatLikeOverGateway(models, opts), model: opts.profile, ...(opts.maxTokens ? { maxTokens: opts.maxTokens } : {}), label: opts.label ?? `gateway:${opts.profile}` });
70
- }
71
- /** A text stream through the gateway: deltas as they arrive, the receipt when done. */
72
- export function textStreamFromModels(models, opts) {
73
- return async (input) => {
74
- const res = await models.stream({ profile: opts.profile, messages: [{ role: 'system', content: input.system }, ...input.messages.map((m) => ({ role: m.role, content: m.content }))], ...(input.maxTokens ?? opts.maxTokens ? { maxOutputTokens: input.maxTokens ?? opts.maxTokens } : {}), context: ctxOf(opts) }, (() => { let soFar = ''; return (delta) => { soFar += delta; input.onDelta(delta, soFar); }; })());
75
- opts.onReceipt?.(res.receipt);
76
- return res.content;
77
- };
78
- }
79
- /** A letter choice through the gateway. The contract carries no logprobs (not in v1), so the chosen letter is
80
- * reported at probability 1 and the others absent — a DETERMINISTIC choice, said so on the decision model's name.
81
- * A judge that needs a distribution keeps the direct `createOpenAiCompatLogprobChoice` until profiles carry `logprobs`. */
82
- export function logprobChoiceFromModels(models, opts) {
83
- return async ({ system, user, letters }) => {
84
- const res = await models.generate({ profile: opts.profile, messages: [{ role: 'system', content: system }, { role: 'user', content: user }], maxOutputTokens: 4, temperature: 0, context: ctxOf(opts) });
85
- opts.onReceipt?.(res.receipt);
86
- const letter = letters.find((l) => res.content.trim().toUpperCase().startsWith(l.toUpperCase()));
87
- return letter ? { [letter]: 0 } : {};
88
- };
89
- }
90
- //# sourceMappingURL=orchestration.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"orchestration.js","sourceRoot":"","sources":["../src/orchestration.ts"],"names":[],"mappings":"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"}
package/spec.md DELETED
@@ -1,7 +0,0 @@
1
- # @agenticprimitives/model-client — spec pointer
2
-
3
- The architect of record is **spec 434 — The AP Model Gateway (`inference.svc`) and the Town Pulse**, allocated in the
4
- product repository: `~/ap-town/specs/434-ap-model-gateway-and-the-town-pulse.md` (Ring 0 `specs/INDEX.md` row 434).
5
- This package is spec 434 §8's second half: the typed client (`models.generate` / `stream` / `listProfiles`) under an
6
- app key (caller class a) or a session wire (caller class b), and the `model-client/orchestration` bridges W3 swaps into
7
- the ap-home runtime: the same prompts the adapter packages hold, run through the gateway by profile.