@armoriq/sdk-dev 0.8.3 → 0.8.5
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 +30 -2
- package/dist/_version.d.ts +1 -1
- package/dist/_version.js +1 -1
- package/dist/cli/commands/auth.d.ts +5 -0
- package/dist/cli/commands/auth.d.ts.map +1 -1
- package/dist/cli/commands/auth.js +24 -8
- package/dist/cli/commands/auth.js.map +1 -1
- package/dist/client.d.ts +1 -0
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +44 -16
- package/dist/client.js.map +1 -1
- package/dist/client_context.d.ts +9 -0
- package/dist/client_context.d.ts.map +1 -0
- package/dist/client_context.js +58 -0
- package/dist/client_context.js.map +1 -0
- package/dist/debug.d.ts +3 -0
- package/dist/debug.d.ts.map +1 -0
- package/dist/debug.js +11 -0
- package/dist/debug.js.map +1 -0
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -2
- package/dist/index.js.map +1 -1
- package/dist/integrations/google_adk.d.ts +5 -1
- package/dist/integrations/google_adk.d.ts.map +1 -1
- package/dist/integrations/google_adk.js +16 -10
- package/dist/integrations/google_adk.js.map +1 -1
- package/dist/integrations/langchain.d.ts.map +1 -1
- package/dist/integrations/langchain.js +3 -2
- package/dist/integrations/langchain.js.map +1 -1
- package/dist/integrations/openai.d.ts +9 -0
- package/dist/integrations/openai.d.ts.map +1 -0
- package/dist/integrations/openai.js +60 -0
- package/dist/integrations/openai.js.map +1 -0
- package/dist/integrations/strands.d.ts.map +1 -1
- package/dist/integrations/strands.js +5 -19
- package/dist/integrations/strands.js.map +1 -1
- package/dist/optional_module.d.ts +3 -0
- package/dist/optional_module.d.ts.map +1 -0
- package/dist/optional_module.js +34 -0
- package/dist/optional_module.js.map +1 -0
- package/dist/session.d.ts +2 -0
- package/dist/session.d.ts.map +1 -1
- package/dist/session.js +8 -0
- package/dist/session.js.map +1 -1
- package/dist/session_transcripts.d.ts +8 -0
- package/dist/session_transcripts.d.ts.map +1 -0
- package/dist/session_transcripts.js +72 -0
- package/dist/session_transcripts.js.map +1 -0
- package/dist/token_usage.d.ts +33 -10
- package/dist/token_usage.d.ts.map +1 -1
- package/dist/token_usage.js +85 -38
- package/dist/token_usage.js.map +1 -1
- package/dist/tool_push.d.ts +1 -1
- package/dist/tool_push.d.ts.map +1 -1
- package/dist/tool_push.js +14 -10
- package/dist/tool_push.js.map +1 -1
- package/dist/tool_registry.d.ts +36 -13
- package/dist/tool_registry.d.ts.map +1 -1
- package/dist/tool_registry.js +304 -114
- package/dist/tool_registry.js.map +1 -1
- package/package.json +1 -1
package/dist/token_usage.js
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.usageHourError = usageHourError;
|
|
3
4
|
exports.summarizeTranscriptUsage = summarizeTranscriptUsage;
|
|
4
|
-
exports.
|
|
5
|
+
exports.summarizeTranscriptUsageByHour = summarizeTranscriptUsageByHour;
|
|
6
|
+
exports.summarizeSessionUsageByHour = summarizeSessionUsageByHour;
|
|
5
7
|
/**
|
|
6
8
|
* Token-usage capture — shared across all ArmorIQ tool integrations
|
|
7
9
|
* (ArmorClaude / ArmorCodex / ArmorCopilot / future agents).
|
|
@@ -11,8 +13,27 @@ exports.summarizeTranscriptUsageByDay = summarizeTranscriptUsageByDay;
|
|
|
11
13
|
* transcript (Claude Code / Codex CLI) into per-model entries; tools whose
|
|
12
14
|
* transcript differs can build entries themselves and still post via the client.
|
|
13
15
|
*/
|
|
16
|
+
const session_transcripts_1 = require("./session_transcripts");
|
|
14
17
|
const fs_1 = require("fs");
|
|
15
18
|
const observability_1 = require("./observability");
|
|
19
|
+
/**
|
|
20
|
+
* Why the backend would reject this payload's `usageDate` / `usageHour`, or
|
|
21
|
+
* undefined when both are valid: a real UTC calendar date in `YYYY-MM-DD` form
|
|
22
|
+
* and an integer hour from 0 to 23.
|
|
23
|
+
*/
|
|
24
|
+
function usageHourError(payload) {
|
|
25
|
+
const { usageDate, usageHour } = payload;
|
|
26
|
+
const date = typeof usageDate === 'string' && /^\d{4}-\d{2}-\d{2}$/.test(usageDate)
|
|
27
|
+
? new Date(`${usageDate}T00:00:00Z`)
|
|
28
|
+
: undefined;
|
|
29
|
+
if (!date || Number.isNaN(date.getTime()) || date.toISOString().slice(0, 10) !== usageDate) {
|
|
30
|
+
return 'usageDate must be a UTC calendar date in YYYY-MM-DD form';
|
|
31
|
+
}
|
|
32
|
+
if (!Number.isInteger(usageHour) || usageHour < 0 || usageHour > 23) {
|
|
33
|
+
return 'usageHour must be an integer from 0 to 23 (UTC hour of usageDate)';
|
|
34
|
+
}
|
|
35
|
+
return undefined;
|
|
36
|
+
}
|
|
16
37
|
function safeEmit(fn) {
|
|
17
38
|
try {
|
|
18
39
|
return fn();
|
|
@@ -40,17 +61,17 @@ function safeEmit(fn) {
|
|
|
40
61
|
* failure never affects the returned entries.
|
|
41
62
|
*/
|
|
42
63
|
async function summarizeTranscriptUsage(transcriptPath, otel) {
|
|
43
|
-
const {
|
|
44
|
-
const entries = mergeEntries(
|
|
64
|
+
const { hours } = readTranscriptUsage(transcriptPath);
|
|
65
|
+
const entries = mergeEntries(hours.flatMap((hour) => hour.entries));
|
|
45
66
|
await emitModelSpans(entries, otel ?? null);
|
|
46
67
|
return entries;
|
|
47
68
|
}
|
|
48
69
|
/**
|
|
49
|
-
* Same parse as `summarizeTranscriptUsage`, split by the UTC
|
|
50
|
-
* was sent and carrying the transcript's working directory. Posting one
|
|
51
|
-
*
|
|
70
|
+
* Same parse as `summarizeTranscriptUsage`, split by the UTC date and hour each
|
|
71
|
+
* message was sent and carrying the transcript's working directory. Posting one
|
|
72
|
+
* row per hour keeps a session's tokens on the hours they were spent.
|
|
52
73
|
*/
|
|
53
|
-
function
|
|
74
|
+
function summarizeTranscriptUsageByHour(transcriptPath) {
|
|
54
75
|
return readTranscriptUsage(transcriptPath);
|
|
55
76
|
}
|
|
56
77
|
function emptyEntry(model) {
|
|
@@ -72,19 +93,20 @@ function mergeEntries(entries) {
|
|
|
72
93
|
return [...byModel.values()];
|
|
73
94
|
}
|
|
74
95
|
function readTranscriptUsage(transcriptPath) {
|
|
96
|
+
const acc = { byHour: new Map(), seen: new Set() };
|
|
97
|
+
accumulateTranscript(transcriptPath, acc);
|
|
98
|
+
return finishUsage(acc);
|
|
99
|
+
}
|
|
100
|
+
function accumulateTranscript(transcriptPath, acc) {
|
|
75
101
|
let raw;
|
|
76
102
|
try {
|
|
77
103
|
raw = (0, fs_1.readFileSync)(transcriptPath, 'utf8');
|
|
78
104
|
}
|
|
79
105
|
catch {
|
|
80
|
-
return
|
|
106
|
+
return;
|
|
81
107
|
}
|
|
82
|
-
const
|
|
83
|
-
|
|
84
|
-
// repeating that message's full usage. Count each message once.
|
|
85
|
-
const seen = new Set();
|
|
86
|
-
let repo;
|
|
87
|
-
let lastDay;
|
|
108
|
+
const { byHour, seen } = acc;
|
|
109
|
+
let lastHour;
|
|
88
110
|
for (const line of raw.split('\n')) {
|
|
89
111
|
const trimmed = line.trim();
|
|
90
112
|
if (!trimmed)
|
|
@@ -96,16 +118,19 @@ function readTranscriptUsage(transcriptPath) {
|
|
|
96
118
|
catch {
|
|
97
119
|
continue;
|
|
98
120
|
}
|
|
99
|
-
if (!repo && typeof obj?.cwd === 'string' && obj.cwd)
|
|
100
|
-
repo = obj.cwd;
|
|
101
|
-
const
|
|
102
|
-
if (
|
|
103
|
-
|
|
121
|
+
if (!acc.repo && typeof obj?.cwd === 'string' && obj.cwd)
|
|
122
|
+
acc.repo = obj.cwd;
|
|
123
|
+
const hour = utcHour(obj?.timestamp) ?? lastHour;
|
|
124
|
+
if (hour)
|
|
125
|
+
lastHour = hour;
|
|
104
126
|
const msg = firstObject(obj?.message, obj?.payload) ?? obj;
|
|
105
127
|
const usage = msg?.usage ?? obj?.usage;
|
|
106
128
|
const model = typeof msg?.model === 'string' ? msg.model : typeof obj?.model === 'string' ? obj.model : '';
|
|
107
129
|
if (!usage || !model || model === '<synthetic>')
|
|
108
130
|
continue;
|
|
131
|
+
// Claude Code writes one line per content block of an assistant message, each
|
|
132
|
+
// repeating that message's full usage, and a forked session copies earlier
|
|
133
|
+
// messages into its own file. Count each message once.
|
|
109
134
|
const messageId = typeof msg?.id === 'string' ? msg.id : '';
|
|
110
135
|
if (messageId) {
|
|
111
136
|
const key = `${messageId}:${typeof obj?.requestId === 'string' ? obj.requestId : ''}`;
|
|
@@ -119,49 +144,71 @@ function readTranscriptUsage(transcriptPath) {
|
|
|
119
144
|
const cacheWrite = tokenCount(usage.cache_creation_input_tokens);
|
|
120
145
|
if (inTok + outTok + cacheRead + cacheWrite === 0)
|
|
121
146
|
continue;
|
|
122
|
-
const bucketKey =
|
|
123
|
-
let models =
|
|
147
|
+
const bucketKey = hour ?? '';
|
|
148
|
+
let models = byHour.get(bucketKey);
|
|
124
149
|
if (!models) {
|
|
125
150
|
models = new Map();
|
|
126
|
-
|
|
151
|
+
byHour.set(bucketKey, models);
|
|
127
152
|
}
|
|
128
|
-
const
|
|
129
|
-
addInto(
|
|
153
|
+
const entry = models.get(model) ?? emptyEntry(model);
|
|
154
|
+
addInto(entry, {
|
|
130
155
|
model,
|
|
131
156
|
inputTokens: inTok,
|
|
132
157
|
outputTokens: outTok,
|
|
133
158
|
cacheReadTokens: cacheRead,
|
|
134
159
|
cacheWriteTokens: cacheWrite,
|
|
135
160
|
});
|
|
136
|
-
models.set(model,
|
|
161
|
+
models.set(model, entry);
|
|
137
162
|
}
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
const
|
|
163
|
+
}
|
|
164
|
+
function finishUsage({ byHour, repo }) {
|
|
165
|
+
// Lines before the first timestamp belong to the first dated hour.
|
|
166
|
+
const undated = byHour.get('');
|
|
167
|
+
byHour.delete('');
|
|
168
|
+
const keys = [...byHour.keys()].sort();
|
|
142
169
|
if (undated) {
|
|
143
|
-
const target =
|
|
144
|
-
const models =
|
|
170
|
+
const target = keys[0] ?? hourKey(new Date());
|
|
171
|
+
const models = byHour.get(target) ?? new Map();
|
|
145
172
|
for (const e of undated.values()) {
|
|
146
173
|
const acc = models.get(e.model) ?? emptyEntry(e.model);
|
|
147
174
|
addInto(acc, e);
|
|
148
175
|
models.set(e.model, acc);
|
|
149
176
|
}
|
|
150
|
-
|
|
177
|
+
byHour.set(target, models);
|
|
151
178
|
}
|
|
152
|
-
const
|
|
179
|
+
const hours = [...byHour.entries()]
|
|
153
180
|
.sort(([a], [b]) => a.localeCompare(b))
|
|
154
|
-
.map(([
|
|
155
|
-
|
|
181
|
+
.map(([key, models]) => ({
|
|
182
|
+
usageDate: key.slice(0, 10),
|
|
183
|
+
usageHour: Number(key.slice(11, 13)),
|
|
184
|
+
entries: [...models.values()],
|
|
185
|
+
}));
|
|
186
|
+
return repo ? { hours, repo } : { hours };
|
|
187
|
+
}
|
|
188
|
+
/**
|
|
189
|
+
* A Claude Code session's usage split by UTC date and hour: the main transcript
|
|
190
|
+
* plus its subagent transcripts, each assistant message counted once across all
|
|
191
|
+
* of them and filed under the hour of its own timestamp. `repo` is the first
|
|
192
|
+
* working directory found, main transcript first.
|
|
193
|
+
*/
|
|
194
|
+
function summarizeSessionUsageByHour(mainTranscriptPath, opts = {}) {
|
|
195
|
+
const acc = { byHour: new Map(), seen: opts.seen ?? new Set() };
|
|
196
|
+
for (const file of (0, session_transcripts_1.sessionTranscriptPaths)(mainTranscriptPath))
|
|
197
|
+
accumulateTranscript(file, acc);
|
|
198
|
+
return finishUsage(acc);
|
|
156
199
|
}
|
|
157
200
|
// A timestamp with no offset is read as UTC, not the machine's zone, so every
|
|
158
|
-
// machine files the same message under the same
|
|
159
|
-
function
|
|
201
|
+
// machine files the same message under the same hour (matches the Python SDK).
|
|
202
|
+
function utcHour(timestamp) {
|
|
160
203
|
if (typeof timestamp !== 'string' || !timestamp)
|
|
161
204
|
return undefined;
|
|
162
205
|
const hasZone = /(?:Z|[+-]\d{2}:?\d{2})$/i.test(timestamp.trim());
|
|
163
206
|
const d = new Date(hasZone || !timestamp.includes('T') ? timestamp : `${timestamp}Z`);
|
|
164
|
-
return Number.isNaN(d.getTime()) ? undefined : d
|
|
207
|
+
return Number.isNaN(d.getTime()) ? undefined : hourKey(d);
|
|
208
|
+
}
|
|
209
|
+
/** `YYYY-MM-DDTHH` of a date in UTC, the bucket key a message is filed under. */
|
|
210
|
+
function hourKey(d) {
|
|
211
|
+
return d.toISOString().slice(0, 13);
|
|
165
212
|
}
|
|
166
213
|
/** Whole, non-negative token count; anything unparseable counts as 0. */
|
|
167
214
|
function tokenCount(value) {
|
package/dist/token_usage.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"token_usage.js","sourceRoot":"","sources":["../src/token_usage.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"token_usage.js","sourceRoot":"","sources":["../src/token_usage.ts"],"names":[],"mappings":"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"}
|
package/dist/tool_push.d.ts
CHANGED
|
@@ -15,7 +15,7 @@ export declare class ToolPusher {
|
|
|
15
15
|
private readonly sleep;
|
|
16
16
|
private readonly clock;
|
|
17
17
|
constructor(client: unknown, opts?: ToolPusherOptions);
|
|
18
|
-
/** Called on every model call. Pushes only when the
|
|
18
|
+
/** Called on every model call. Pushes only when the agent's tools or any server's tools moved. Resolves when the push settles. */
|
|
19
19
|
note(agentKey?: string | null, force?: boolean): Promise<void>;
|
|
20
20
|
/** conmap answered `inventoryUnknown`: send the snapshot again. */
|
|
21
21
|
request(agentKey?: string | null): Promise<void>;
|
package/dist/tool_push.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool_push.d.ts","sourceRoot":"","sources":["../src/tool_push.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"tool_push.d.ts","sourceRoot":"","sources":["../src/tool_push.ts"],"names":[],"mappings":"AASA,eAAO,MAAM,UAAU,mBAAmB,CAAC;AAC3C,eAAO,MAAM,WAAW,QAAS,CAAC;AAClC,eAAO,MAAM,oBAAoB,QAAW,CAAC;AAC7C,eAAO,MAAM,eAAe,8BAAkC,CAAC;AAY/D,MAAM,WAAW,iBAAiB;IAChC,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACtC,KAAK,CAAC,EAAE,MAAM,MAAM,CAAC;CACtB;AAID,wFAAwF;AACxF,qBAAa,UAAU;IAQnB,OAAO,CAAC,QAAQ,CAAC,MAAM;IAPzB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA6B;IACpD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA6B;IACzD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAqB;IAC9C,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAgC;IACtD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAe;gBAGlB,MAAM,EAAE,OAAO,EAChC,IAAI,GAAE,iBAAsB;IAM9B,kIAAkI;IAClI,IAAI,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,EAAE,KAAK,UAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IA6B5D,mEAAmE;IACnE,OAAO,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;YAIlC,IAAI;CAkDnB;AAID,wBAAgB,aAAa,CAAC,MAAM,EAAE,OAAO,GAAG,UAAU,CAQzD;AAED,gGAAgG;AAChG,wBAAgB,aAAa,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAO7E;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAO3E"}
|
package/dist/tool_push.js
CHANGED
|
@@ -10,6 +10,7 @@ exports.requestPush = requestPush;
|
|
|
10
10
|
* the agent, never delays a call.
|
|
11
11
|
*/
|
|
12
12
|
const zlib_1 = require("zlib");
|
|
13
|
+
const debug_1 = require("./debug");
|
|
13
14
|
const tool_registry_1 = require("./tool_registry");
|
|
14
15
|
exports.TOOLS_PATH = '/iap/sdk/tools';
|
|
15
16
|
exports.DEBOUNCE_MS = 60_000;
|
|
@@ -29,7 +30,7 @@ class ToolPusher {
|
|
|
29
30
|
this.sleep = opts.sleep ?? realSleep;
|
|
30
31
|
this.clock = opts.clock ?? Date.now;
|
|
31
32
|
}
|
|
32
|
-
/** Called on every model call. Pushes only when the
|
|
33
|
+
/** Called on every model call. Pushes only when the agent's tools or any server's tools moved. Resolves when the push settles. */
|
|
33
34
|
note(agentKey, force = false) {
|
|
34
35
|
const key = agentKey ?? (0, tool_registry_1.agentKeyFor)(this.client);
|
|
35
36
|
if (!key)
|
|
@@ -37,11 +38,12 @@ class ToolPusher {
|
|
|
37
38
|
let current;
|
|
38
39
|
try {
|
|
39
40
|
const registry = (0, tool_registry_1.defaultToolRegistry)();
|
|
40
|
-
if (!registry.
|
|
41
|
+
if (!registry.hasDeclarations(key))
|
|
41
42
|
return Promise.resolve();
|
|
42
|
-
current = registry.
|
|
43
|
+
current = registry.pushFingerprint(key);
|
|
43
44
|
}
|
|
44
|
-
catch {
|
|
45
|
+
catch (err) {
|
|
46
|
+
(0, debug_1.debugLog)('tool push note', err);
|
|
45
47
|
return Promise.resolve();
|
|
46
48
|
}
|
|
47
49
|
if (this.inflight.has(key))
|
|
@@ -70,7 +72,9 @@ class ToolPusher {
|
|
|
70
72
|
return this.note(agentKey, true);
|
|
71
73
|
}
|
|
72
74
|
async push(key) {
|
|
73
|
-
const
|
|
75
|
+
const registry = (0, tool_registry_1.defaultToolRegistry)();
|
|
76
|
+
const fingerprint = registry.pushFingerprint(key);
|
|
77
|
+
const body = registry.pushBody(key);
|
|
74
78
|
this.lastAttempt.set(key, this.clock());
|
|
75
79
|
const internals = this.client._sessionInternals();
|
|
76
80
|
let data = JSON.stringify(body);
|
|
@@ -103,7 +107,7 @@ class ToolPusher {
|
|
|
103
107
|
continue;
|
|
104
108
|
}
|
|
105
109
|
if (status >= 200 && status < 300) {
|
|
106
|
-
this.pushed.set(key,
|
|
110
|
+
this.pushed.set(key, fingerprint);
|
|
107
111
|
return;
|
|
108
112
|
}
|
|
109
113
|
if (status >= 400 && status < 500) {
|
|
@@ -134,8 +138,8 @@ function noteModelCall(client, agentKey) {
|
|
|
134
138
|
try {
|
|
135
139
|
void toolPusherFor(client).note(agentKey);
|
|
136
140
|
}
|
|
137
|
-
catch {
|
|
138
|
-
|
|
141
|
+
catch (err) {
|
|
142
|
+
(0, debug_1.debugLog)('noteModelCall', err);
|
|
139
143
|
}
|
|
140
144
|
}
|
|
141
145
|
function requestPush(client, agentKey) {
|
|
@@ -144,8 +148,8 @@ function requestPush(client, agentKey) {
|
|
|
144
148
|
try {
|
|
145
149
|
void toolPusherFor(client).request(agentKey);
|
|
146
150
|
}
|
|
147
|
-
catch {
|
|
148
|
-
|
|
151
|
+
catch (err) {
|
|
152
|
+
(0, debug_1.debugLog)('requestPush', err);
|
|
149
153
|
}
|
|
150
154
|
}
|
|
151
155
|
//# sourceMappingURL=tool_push.js.map
|
package/dist/tool_push.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool_push.js","sourceRoot":"","sources":["../src/tool_push.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"tool_push.js","sourceRoot":"","sources":["../src/tool_push.ts"],"names":[],"mappings":"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"}
|
package/dist/tool_registry.d.ts
CHANGED
|
@@ -9,6 +9,14 @@ export interface ToolDeclaration {
|
|
|
9
9
|
export interface McpServerRef {
|
|
10
10
|
name: string;
|
|
11
11
|
url: string;
|
|
12
|
+
/** Tools the agent saw from this server, schemas exactly as the server sent them. */
|
|
13
|
+
tools?: ToolDeclaration[];
|
|
14
|
+
}
|
|
15
|
+
export interface McpServerEntry {
|
|
16
|
+
name: string;
|
|
17
|
+
url: string;
|
|
18
|
+
snapshotHash: string;
|
|
19
|
+
tools: ArmorToolEntry[];
|
|
12
20
|
}
|
|
13
21
|
export interface ArmorToolEntry {
|
|
14
22
|
name: string;
|
|
@@ -23,8 +31,13 @@ export interface ArmorToolsResponse {
|
|
|
23
31
|
agent: string | null;
|
|
24
32
|
sdk: string;
|
|
25
33
|
tools: ArmorToolEntry[];
|
|
26
|
-
mcpServers:
|
|
34
|
+
mcpServers: McpServerEntry[];
|
|
27
35
|
}
|
|
36
|
+
/** One server is one name inside the org; sightings differing in case or trailing underscores are the same server. */
|
|
37
|
+
export declare function serverKey(s: {
|
|
38
|
+
name: string;
|
|
39
|
+
url: string;
|
|
40
|
+
}): string;
|
|
28
41
|
export declare const SNAPSHOT_HASH_PREFIX = "v1:sha256:";
|
|
29
42
|
/** `v1:sha256` over sorted `name:schemaHash` lines. Descriptions are not part of it. */
|
|
30
43
|
export declare function snapshotHash(tools: Iterable<{
|
|
@@ -32,12 +45,12 @@ export declare function snapshotHash(tools: Iterable<{
|
|
|
32
45
|
schemaHash?: string | null;
|
|
33
46
|
}>): string;
|
|
34
47
|
export interface ToolSnapshotPush {
|
|
35
|
-
contract:
|
|
48
|
+
contract: 2;
|
|
36
49
|
agent: string;
|
|
37
50
|
sdk: string;
|
|
38
51
|
snapshotHash: string;
|
|
39
52
|
tools: ArmorToolEntry[];
|
|
40
|
-
mcpServers:
|
|
53
|
+
mcpServers: McpServerEntry[];
|
|
41
54
|
}
|
|
42
55
|
export declare class ToolRegistry {
|
|
43
56
|
private readonly tools;
|
|
@@ -47,10 +60,12 @@ export declare class ToolRegistry {
|
|
|
47
60
|
/** A tool ran that nothing declared: record the name with no schema. Server-prefixed names belong to the server. */
|
|
48
61
|
observe(agentKey: string, name: string, serverNames?: readonly string[], toolMap?: Record<string, string>): void;
|
|
49
62
|
clear(agentKey?: string): void;
|
|
50
|
-
/**
|
|
51
|
-
|
|
63
|
+
/** Nothing declared is never pushed; an empty snapshot would stale every declared row. */
|
|
64
|
+
hasDeclarations(agentKey: string): boolean;
|
|
52
65
|
/** Contract §4 fingerprint of one agent's tools; cached until the set changes. */
|
|
53
66
|
snapshotHash(agentKey: string): string;
|
|
67
|
+
/** What a push would send, as one string: the agent's tool hash and each server's. A server change moves it; the agent hash alone does not. */
|
|
68
|
+
pushFingerprint(agentKey: string): string;
|
|
54
69
|
/** The `POST /iap/sdk/tools` body for one agent (contract §2). */
|
|
55
70
|
pushBody(agentKey: string): ToolSnapshotPush;
|
|
56
71
|
/** One agent's tools, or a union tagged per entry when several agents share a process. */
|
|
@@ -72,27 +87,35 @@ export declare function knownToolMap(client: unknown): Promise<Record<string, st
|
|
|
72
87
|
/** `<server>__<tool>`, or `<server>_<tool>` for a server the org registered. */
|
|
73
88
|
export declare function mcpBackedByName(name: string, serverNames: readonly string[]): boolean;
|
|
74
89
|
export declare function observeForClient(client: unknown, name: string): void;
|
|
75
|
-
/** Gemini `Schema` (uppercase `type`, `nullable`) to JSON Schema. */
|
|
76
90
|
export declare function geminiSchemaToJsonSchema(schema: unknown): unknown;
|
|
77
91
|
export declare function declarationsFromAdkAgent(agent: unknown): {
|
|
78
92
|
tools: ToolDeclaration[];
|
|
79
93
|
servers: McpServerRef[];
|
|
80
94
|
};
|
|
95
|
+
/**
|
|
96
|
+
* The tools ADK resolved for one model request (`LlmRequest.toolsDict`): toolsets are
|
|
97
|
+
* already expanded, and each MCP tool carries its raw definition and its session.
|
|
98
|
+
* No extra I/O.
|
|
99
|
+
*/
|
|
100
|
+
export declare function declarationsFromAdkResolvedTools(toolsDict: unknown): {
|
|
101
|
+
tools: ToolDeclaration[];
|
|
102
|
+
servers: McpServerRef[];
|
|
103
|
+
};
|
|
104
|
+
/** ADK toolsets list their tools asynchronously; each tool wraps the raw MCP definition as `mcpTool`. */
|
|
105
|
+
export declare function declarationsFromAdkAgentAsync(agent: unknown): Promise<{
|
|
106
|
+
tools: ToolDeclaration[];
|
|
107
|
+
servers: McpServerRef[];
|
|
108
|
+
}>;
|
|
81
109
|
export declare function declarationsFromStrandsAgent(agent: unknown): {
|
|
82
110
|
tools: ToolDeclaration[];
|
|
83
111
|
servers: McpServerRef[];
|
|
84
112
|
};
|
|
85
|
-
/**
|
|
86
|
-
/**
|
|
87
|
-
* Tool definitions as a model request carries them: `{type:'function', function:{name,
|
|
88
|
-
* description, parameters}}` or flat `{name, description, parameters | input_schema}`.
|
|
89
|
-
* LangChain hands these to `handleChatModelStart` in `invocation_params.tools`, so the
|
|
90
|
-
* registry fills from the model call with nothing for the developer to wire.
|
|
91
|
-
*/
|
|
113
|
+
/** The schemas here are the model-side copies, not what the server sent; only a raw MCP definition is `mcp`. */
|
|
92
114
|
export declare function declarationsFromOpenAiTools(list: unknown[], serverNames?: readonly string[], toolMap?: Record<string, string>): {
|
|
93
115
|
tools: ToolDeclaration[];
|
|
94
116
|
servers: McpServerRef[];
|
|
95
117
|
};
|
|
118
|
+
/** LangChain tools handed to the factory. A name in `<server>__<tool>` form is MCP-backed. */
|
|
96
119
|
export declare function declarationsFromLangChainTools(list: unknown[], serverNames?: readonly string[]): {
|
|
97
120
|
tools: ToolDeclaration[];
|
|
98
121
|
servers: McpServerRef[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool_registry.d.ts","sourceRoot":"","sources":["../src/tool_registry.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"tool_registry.d.ts","sourceRoot":"","sources":["../src/tool_registry.ts"],"names":[],"mappings":"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"}
|