@armoriq/sdk-dev 0.2.15 → 0.3.0

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 (55) hide show
  1. package/dist/cli/commands/auth.d.ts +15 -0
  2. package/dist/cli/commands/auth.d.ts.map +1 -0
  3. package/dist/cli/commands/auth.js +259 -0
  4. package/dist/cli/commands/auth.js.map +1 -0
  5. package/dist/cli/commands/keys.d.ts +14 -0
  6. package/dist/cli/commands/keys.d.ts.map +1 -0
  7. package/dist/cli/commands/keys.js +132 -0
  8. package/dist/cli/commands/keys.js.map +1 -0
  9. package/dist/cli/commands/orgs.d.ts +10 -0
  10. package/dist/cli/commands/orgs.d.ts.map +1 -0
  11. package/dist/cli/commands/orgs.js +152 -0
  12. package/dist/cli/commands/orgs.js.map +1 -0
  13. package/dist/cli/commands/status.d.ts +9 -0
  14. package/dist/cli/commands/status.d.ts.map +1 -0
  15. package/dist/cli/commands/status.js +103 -0
  16. package/dist/cli/commands/status.js.map +1 -0
  17. package/dist/cli/index.d.ts +15 -0
  18. package/dist/cli/index.d.ts.map +1 -0
  19. package/dist/cli/index.js +141 -0
  20. package/dist/cli/index.js.map +1 -0
  21. package/dist/cli/state.d.ts +22 -0
  22. package/dist/cli/state.d.ts.map +1 -0
  23. package/dist/cli/state.js +91 -0
  24. package/dist/cli/state.js.map +1 -0
  25. package/dist/cli/util.d.ts +19 -0
  26. package/dist/cli/util.d.ts.map +1 -0
  27. package/dist/cli/util.js +107 -0
  28. package/dist/cli/util.js.map +1 -0
  29. package/dist/client.d.ts +73 -1
  30. package/dist/client.d.ts.map +1 -1
  31. package/dist/client.js +289 -5
  32. package/dist/client.js.map +1 -1
  33. package/dist/config.d.ts +64 -0
  34. package/dist/config.d.ts.map +1 -0
  35. package/dist/config.js +215 -0
  36. package/dist/config.js.map +1 -0
  37. package/dist/index.d.ts +6 -3
  38. package/dist/index.d.ts.map +1 -1
  39. package/dist/index.js +17 -2
  40. package/dist/index.js.map +1 -1
  41. package/dist/integrations/google_adk.d.ts +107 -0
  42. package/dist/integrations/google_adk.d.ts.map +1 -0
  43. package/dist/integrations/google_adk.js +301 -0
  44. package/dist/integrations/google_adk.js.map +1 -0
  45. package/dist/models.d.ts +36 -0
  46. package/dist/models.d.ts.map +1 -1
  47. package/dist/plan_builder.d.ts +53 -0
  48. package/dist/plan_builder.d.ts.map +1 -0
  49. package/dist/plan_builder.js +110 -0
  50. package/dist/plan_builder.js.map +1 -0
  51. package/dist/session.d.ts +75 -0
  52. package/dist/session.d.ts.map +1 -0
  53. package/dist/session.js +486 -0
  54. package/dist/session.js.map +1 -0
  55. package/package.json +9 -2
@@ -0,0 +1,301 @@
1
+ "use strict";
2
+ /**
3
+ * ArmorIQ — Google ADK integration (TypeScript).
4
+ *
5
+ * Mirrors armoriq_sdk/integrations/google_adk.py.
6
+ *
7
+ * Multi-user pattern:
8
+ *
9
+ * import { ArmorIQADK } from '@armoriq/sdk/integrations/google_adk';
10
+ * const armoriq = new ArmorIQADK({ apiKey: process.env.ARMORIQ_API_KEY! });
11
+ *
12
+ * // per-request, inside your chat handler:
13
+ * const scope = await armoriq.forUser(userEmail, { goal: message });
14
+ * scope.install(rootAgent);
15
+ * try {
16
+ * for await (const event of runner.runAsync(...)) { ... }
17
+ * } finally {
18
+ * scope.uninstall(rootAgent);
19
+ * }
20
+ *
21
+ * The bundle installs three ADK lifecycle callbacks on the agent:
22
+ * afterModelCallback → mint intent token from LLM tool calls
23
+ * beforeToolCallback → enforce per-user policy, block/hold if needed
24
+ * afterToolCallback → audit report
25
+ *
26
+ * "Agent" here is duck-typed — anything with three settable callback
27
+ * properties works. We don't take a hard dep on a specific TS ADK
28
+ * package because there isn't a single dominant one yet; the contract
29
+ * is a bag of three async functions.
30
+ */
31
+ Object.defineProperty(exports, "__esModule", { value: true });
32
+ exports.ArmorIQADKBundle = exports.ArmorIQADK = void 0;
33
+ const client_1 = require("../client");
34
+ /**
35
+ * Process-wide ArmorIQ factory for ADK-style agents.
36
+ */
37
+ class ArmorIQADK {
38
+ client;
39
+ mode;
40
+ llm;
41
+ validitySeconds;
42
+ defaultMcpName;
43
+ customParser;
44
+ bootstrapData;
45
+ constructor(opts) {
46
+ this.client = new client_1.ArmorIQClient({
47
+ apiKey: opts.apiKey,
48
+ backendEndpoint: opts.backendEndpoint,
49
+ iapEndpoint: opts.iapEndpoint ?? opts.backendEndpoint,
50
+ proxyEndpoint: opts.proxyEndpoint ?? opts.backendEndpoint,
51
+ useProduction: opts.useProduction ?? true,
52
+ userId: 'agent',
53
+ agentId: 'agent',
54
+ });
55
+ this.defaultMcpName = opts.defaultMcpName;
56
+ this.customParser = opts.toolNameParser;
57
+ this.validitySeconds = opts.validitySeconds ?? 300;
58
+ this.mode = opts.mode ?? 'sdk';
59
+ this.llm = opts.llm ?? 'agent';
60
+ }
61
+ async bootstrap() {
62
+ if (!this.bootstrapData) {
63
+ this.bootstrapData = await this.client.bootstrap();
64
+ const orgName = this.bootstrapData.org?.name ?? 'unknown';
65
+ const mcps = Array.isArray(this.bootstrapData.mcps)
66
+ ? this.bootstrapData.mcps.map((m) => m.name)
67
+ : [];
68
+ const toolMapSize = Object.keys(this.bootstrapData.toolMap ?? {}).length;
69
+ console.info(`[armoriq] bootstrap: org=${orgName} mcps=${JSON.stringify(mcps)} toolMap=${toolMapSize}`);
70
+ }
71
+ return this.bootstrapData;
72
+ }
73
+ async toolNameParser() {
74
+ if (this.customParser)
75
+ return this.customParser;
76
+ const bootstrap = await this.bootstrap();
77
+ const toolMap = bootstrap.toolMap ?? {};
78
+ const defaultMcp = this.defaultMcpName;
79
+ return (toolName) => {
80
+ const mcp = toolMap[toolName];
81
+ if (mcp)
82
+ return { mcp, action: toolName };
83
+ if (toolName.includes('__')) {
84
+ const idx = toolName.indexOf('__');
85
+ return { mcp: toolName.slice(0, idx), action: toolName.slice(idx + 2) };
86
+ }
87
+ if (defaultMcp)
88
+ return { mcp: defaultMcp, action: toolName };
89
+ return { mcp: 'unknown', action: toolName };
90
+ };
91
+ }
92
+ invalidateUser(userEmail) {
93
+ this.client.invalidateUser(userEmail);
94
+ }
95
+ async forUser(userEmail, opts) {
96
+ await this.bootstrap();
97
+ const scope = this.client.forUser(userEmail);
98
+ const parser = await this.toolNameParser();
99
+ return new ArmorIQADKBundle({
100
+ factory: this,
101
+ scope,
102
+ parser,
103
+ userEmail: userEmail.trim().toLowerCase(),
104
+ goal: opts?.goal ?? 'agent task',
105
+ });
106
+ }
107
+ }
108
+ exports.ArmorIQADK = ArmorIQADK;
109
+ /**
110
+ * Per-request ADK bundle — installs/uninstalls lifecycle callbacks on
111
+ * one agent and binds them to one user's session.
112
+ */
113
+ class ArmorIQADKBundle {
114
+ userEmail;
115
+ goal;
116
+ session;
117
+ factory;
118
+ scope;
119
+ parser;
120
+ planMinted = false;
121
+ blockedTools = new Set();
122
+ blockedActions = new Map();
123
+ agent;
124
+ saved = {};
125
+ constructor(args) {
126
+ this.factory = args.factory;
127
+ this.scope = args.scope;
128
+ this.parser = args.parser;
129
+ this.userEmail = args.userEmail;
130
+ this.goal = args.goal;
131
+ }
132
+ ensureSession() {
133
+ if (!this.session) {
134
+ const opts = {
135
+ mode: this.factory.mode,
136
+ validitySeconds: this.factory.validitySeconds,
137
+ llm: this.factory.llm,
138
+ toolNameParser: this.parser,
139
+ defaultMcpName: this.factory.defaultMcpName,
140
+ };
141
+ this.session = this.scope.startSession(opts);
142
+ }
143
+ return this.session;
144
+ }
145
+ async afterModel(_callbackContext, llmResponse) {
146
+ try {
147
+ if (this.planMinted)
148
+ return null;
149
+ const parts = llmResponse?.content?.parts ?? [];
150
+ const toolCalls = [];
151
+ for (const p of parts) {
152
+ const fc = p?.functionCall ?? p?.function_call;
153
+ if (fc?.name) {
154
+ toolCalls.push({ name: fc.name, args: fc.args ? { ...fc.args } : {} });
155
+ }
156
+ }
157
+ if (toolCalls.length === 0)
158
+ return null;
159
+ await this.ensureSession().startPlan(toolCalls, this.goal);
160
+ this.planMinted = true;
161
+ console.info(`[armoriq] plan minted user=${this.userEmail} tools=${toolCalls.length}`);
162
+ }
163
+ catch (exc) {
164
+ console.warn(`[armoriq] afterModelCallback failed: ${exc.message}`);
165
+ }
166
+ return null;
167
+ }
168
+ async beforeTool(tool, args, _toolContext) {
169
+ const toolName = tool?.name ?? String(tool);
170
+ try {
171
+ const decision = await this.ensureSession().check(toolName, args ?? {}, this.userEmail);
172
+ if (!decision.allowed) {
173
+ const policy = decision.matchedPolicy ? ` (policy: ${decision.matchedPolicy})` : '';
174
+ if (decision.action === 'hold') {
175
+ console.info(`[armoriq] HELD ${toolName} user=${this.userEmail} reason=${decision.reason} — waiting for approval...`);
176
+ // 30-min default, 3s → 15s exponential, matches PY hold-retry.
177
+ const timeoutMs = 30 * 60 * 1000;
178
+ const deadline = Date.now() + timeoutMs;
179
+ let pollIntervalMs = 3000;
180
+ let attempt = 0;
181
+ let approved = false;
182
+ let finalDecision = decision;
183
+ while (Date.now() < deadline) {
184
+ await new Promise((r) => setTimeout(r, pollIntervalMs));
185
+ pollIntervalMs = Math.min(pollIntervalMs * 1.5, 15000);
186
+ attempt += 1;
187
+ const retry = await this.ensureSession().check(toolName, args ?? {}, this.userEmail);
188
+ finalDecision = retry;
189
+ if (retry.allowed) {
190
+ console.info(`[armoriq] APPROVED ${toolName} attempt ${attempt}`);
191
+ approved = true;
192
+ break;
193
+ }
194
+ if (retry.action !== 'hold') {
195
+ console.info(`[armoriq] REJECTED ${toolName} action=${retry.action}`);
196
+ break;
197
+ }
198
+ }
199
+ if (approved)
200
+ return null;
201
+ const finalPolicy = finalDecision.matchedPolicy
202
+ ? ` (policy: ${finalDecision.matchedPolicy})`
203
+ : '';
204
+ this.blockedTools.add(toolName);
205
+ this.blockedActions.set(toolName, finalDecision.action);
206
+ if (finalDecision.action === 'hold') {
207
+ return {
208
+ error: `Approval timed out${finalPolicy}. Reason: ${finalDecision.reason ?? 'policy-hold'}.`,
209
+ armoriq_enforcement: {
210
+ blocked: true,
211
+ action: 'hold',
212
+ reason: finalDecision.reason,
213
+ matched_policy: finalDecision.matchedPolicy,
214
+ tool: toolName,
215
+ delegation_id: finalDecision.delegationId,
216
+ },
217
+ };
218
+ }
219
+ return {
220
+ error: `This action is not permitted${finalPolicy}. Reason: ${finalDecision.reason ?? 'policy-blocked'}.`,
221
+ armoriq_enforcement: {
222
+ blocked: true,
223
+ action: finalDecision.action,
224
+ reason: finalDecision.reason,
225
+ matched_policy: finalDecision.matchedPolicy,
226
+ tool: toolName,
227
+ delegation_id: finalDecision.delegationId,
228
+ },
229
+ };
230
+ }
231
+ // Hard block
232
+ this.blockedTools.add(toolName);
233
+ this.blockedActions.set(toolName, decision.action);
234
+ console.info(`[armoriq] BLOCKED ${toolName} user=${this.userEmail} action=${decision.action} reason=${decision.reason}`);
235
+ return {
236
+ error: `This action is not permitted by your organization's policy${policy}. Reason: ${decision.reason ?? 'policy-blocked'}.`,
237
+ armoriq_enforcement: {
238
+ blocked: true,
239
+ action: decision.action,
240
+ reason: decision.reason,
241
+ matched_policy: decision.matchedPolicy,
242
+ tool: toolName,
243
+ delegation_id: decision.delegationId,
244
+ },
245
+ };
246
+ }
247
+ }
248
+ catch (exc) {
249
+ console.warn(`[armoriq] beforeToolCallback failed: ${exc.message}`);
250
+ }
251
+ return null;
252
+ }
253
+ async afterTool(tool, args, _toolContext, toolResponse) {
254
+ const toolName = tool?.name ?? String(tool);
255
+ try {
256
+ if (this.blockedTools.has(toolName)) {
257
+ const action = this.blockedActions.get(toolName) ?? 'block';
258
+ this.blockedActions.delete(toolName);
259
+ this.blockedTools.delete(toolName);
260
+ if (action !== 'hold') {
261
+ await this.ensureSession().report(toolName, args ?? {}, toolResponse, {
262
+ status: 'failed',
263
+ errorMessage: 'Blocked by policy',
264
+ });
265
+ }
266
+ return null;
267
+ }
268
+ await this.ensureSession().report(toolName, args ?? {}, toolResponse);
269
+ }
270
+ catch (exc) {
271
+ console.warn(`[armoriq] afterToolCallback failed: ${exc.message}`);
272
+ }
273
+ return null;
274
+ }
275
+ /**
276
+ * Attach the three callbacks to the ADK-style agent. Save originals
277
+ * for uninstall().
278
+ */
279
+ install(agent) {
280
+ this.agent = agent;
281
+ this.saved = {
282
+ afterModelCallback: agent.afterModelCallback,
283
+ beforeToolCallback: agent.beforeToolCallback,
284
+ afterToolCallback: agent.afterToolCallback,
285
+ };
286
+ agent.afterModelCallback = (...args) => this.afterModel(args[0], args[1]);
287
+ agent.beforeToolCallback = (tool, args, ctx) => this.beforeTool(tool, args, ctx);
288
+ agent.afterToolCallback = (tool, args, ctx, response) => this.afterTool(tool, args, ctx, response);
289
+ return this;
290
+ }
291
+ uninstall(agent) {
292
+ const a = agent ?? this.agent;
293
+ if (!a)
294
+ return;
295
+ a.afterModelCallback = this.saved.afterModelCallback;
296
+ a.beforeToolCallback = this.saved.beforeToolCallback;
297
+ a.afterToolCallback = this.saved.afterToolCallback;
298
+ }
299
+ }
300
+ exports.ArmorIQADKBundle = ArmorIQADKBundle;
301
+ //# sourceMappingURL=google_adk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"google_adk.js","sourceRoot":"","sources":["../../src/integrations/google_adk.ts"],"names":[],"mappings":"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"}
package/dist/models.d.ts CHANGED
@@ -233,6 +233,37 @@ export interface ApprovedDelegation {
233
233
  approverRole: string;
234
234
  delegationToken?: string;
235
235
  }
236
+ /**
237
+ * A flat tool-call as surfaced by most LLM frameworks.
238
+ * Used by plan_builder helpers and ArmorIQSession.startPlan.
239
+ */
240
+ export interface ToolCall {
241
+ name: string;
242
+ args?: Record<string, unknown>;
243
+ }
244
+ /**
245
+ * Per-MCP credentials forwarded to the proxy via the X-Armoriq-MCP-Auth header.
246
+ * The discriminated union mirrors the Python SDK's McpCredential shape so
247
+ * the JSON env blob (ARMORIQ_MCP_CREDENTIALS) is portable across SDKs.
248
+ */
249
+ export type McpCredential = {
250
+ authType: 'bearer';
251
+ token: string;
252
+ } | {
253
+ authType: 'api_key';
254
+ apiKey: string;
255
+ headerName?: string;
256
+ } | {
257
+ authType: 'basic';
258
+ username: string;
259
+ password: string;
260
+ } | {
261
+ authType: 'none';
262
+ };
263
+ /**
264
+ * Map of MCP identifier (or upper-snake "safe name") to credential.
265
+ */
266
+ export type McpCredentialMap = Record<string, McpCredential>;
236
267
  /**
237
268
  * SDK configuration.
238
269
  */
@@ -259,5 +290,10 @@ export interface SDKConfig {
259
290
  apiKey?: string;
260
291
  /** Use production endpoints */
261
292
  useProduction: boolean;
293
+ /**
294
+ * Per-MCP credentials. Merged with ARMORIQ_MCP_CREDENTIALS env JSON and
295
+ * ARMORIQ_MCP_<SAFE_NAME>_* per-MCP env vars; constructor option wins.
296
+ */
297
+ mcpCredentials?: McpCredentialMap;
262
298
  }
263
299
  //# sourceMappingURL=models.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../src/models.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../src/models.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,53 @@
1
+ /**
2
+ * Plan-shape helpers used by ArmorIQSession and framework integrations.
3
+ *
4
+ * Most LLM frameworks surface tool calls as a flat list of {name, args}.
5
+ * The SDK accepts that shape directly so plugin code doesn't have to
6
+ * hand-construct {goal, steps: [...]} every time.
7
+ *
8
+ * Mirrors armoriq_sdk/plan_builder.py — outputs the same plan shape and
9
+ * hash digest so PY and TS sides round-trip cleanly.
10
+ */
11
+ import { ToolCall } from './models';
12
+ export type ToolNameParser = (toolName: string) => {
13
+ mcp: string;
14
+ action: string;
15
+ };
16
+ /**
17
+ * Default tool-name convention: `<MCP>__<action>`. Matches the proxy's
18
+ * MCP gateway and the convention used by sdk-admin-agent.
19
+ *
20
+ * "Stripe__create_payment" -> { mcp: "Stripe", action: "create_payment" }
21
+ * "create_payment" -> uses defaultMcpName, else throws.
22
+ */
23
+ export declare function defaultToolNameParser(defaultMcpName?: string): ToolNameParser;
24
+ export interface PlanStep {
25
+ action: string;
26
+ tool: string;
27
+ mcp: string;
28
+ params: Record<string, unknown>;
29
+ description: string;
30
+ }
31
+ export interface BuiltPlan {
32
+ goal: string;
33
+ steps: PlanStep[];
34
+ }
35
+ /**
36
+ * Build an SDK-shaped plan dict from a flat list of tool calls.
37
+ */
38
+ export declare function buildPlanFromToolCalls(toolCalls: Array<ToolCall | {
39
+ name: string;
40
+ args?: Record<string, unknown>;
41
+ }>, goal?: string, toolNameParser?: ToolNameParser, defaultMcpName?: string): BuiltPlan;
42
+ /**
43
+ * Stable hash over a tool-calls list — used by ArmorIQSession to skip
44
+ * re-minting when the LLM re-emits the same plan in the same turn.
45
+ *
46
+ * Uses JSON.stringify with no key sorting, matching the Python side's
47
+ * json.dumps(separators=(",",":")), so TS and PY produce matching digests.
48
+ */
49
+ export declare function hashToolCalls(toolCalls: Array<ToolCall | {
50
+ name: string;
51
+ args?: Record<string, unknown>;
52
+ }>): string;
53
+ //# sourceMappingURL=plan_builder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plan_builder.d.ts","sourceRoot":"","sources":["../src/plan_builder.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAEpC,MAAM,MAAM,cAAc,GAAG,CAAC,QAAQ,EAAE,MAAM,KAAK;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAEnF;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,cAAc,CAAC,EAAE,MAAM,GAAG,cAAc,CAkB7E;AAMD,MAAM,WAAW,QAAQ;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,QAAQ,EAAE,CAAC;CACnB;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,SAAS,EAAE,KAAK,CAAC,QAAQ,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,CAAC,EAC7E,IAAI,CAAC,EAAE,MAAM,EACb,cAAc,CAAC,EAAE,cAAc,EAC/B,cAAc,CAAC,EAAE,MAAM,GACtB,SAAS,CAcX;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAC3B,SAAS,EAAE,KAAK,CAAC,QAAQ,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,CAAC,GAC5E,MAAM,CAOR"}
@@ -0,0 +1,110 @@
1
+ "use strict";
2
+ /**
3
+ * Plan-shape helpers used by ArmorIQSession and framework integrations.
4
+ *
5
+ * Most LLM frameworks surface tool calls as a flat list of {name, args}.
6
+ * The SDK accepts that shape directly so plugin code doesn't have to
7
+ * hand-construct {goal, steps: [...]} every time.
8
+ *
9
+ * Mirrors armoriq_sdk/plan_builder.py — outputs the same plan shape and
10
+ * hash digest so PY and TS sides round-trip cleanly.
11
+ */
12
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
13
+ if (k2 === undefined) k2 = k;
14
+ var desc = Object.getOwnPropertyDescriptor(m, k);
15
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
16
+ desc = { enumerable: true, get: function() { return m[k]; } };
17
+ }
18
+ Object.defineProperty(o, k2, desc);
19
+ }) : (function(o, m, k, k2) {
20
+ if (k2 === undefined) k2 = k;
21
+ o[k2] = m[k];
22
+ }));
23
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
24
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
25
+ }) : function(o, v) {
26
+ o["default"] = v;
27
+ });
28
+ var __importStar = (this && this.__importStar) || (function () {
29
+ var ownKeys = function(o) {
30
+ ownKeys = Object.getOwnPropertyNames || function (o) {
31
+ var ar = [];
32
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
33
+ return ar;
34
+ };
35
+ return ownKeys(o);
36
+ };
37
+ return function (mod) {
38
+ if (mod && mod.__esModule) return mod;
39
+ var result = {};
40
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
41
+ __setModuleDefault(result, mod);
42
+ return result;
43
+ };
44
+ })();
45
+ Object.defineProperty(exports, "__esModule", { value: true });
46
+ exports.defaultToolNameParser = defaultToolNameParser;
47
+ exports.buildPlanFromToolCalls = buildPlanFromToolCalls;
48
+ exports.hashToolCalls = hashToolCalls;
49
+ const crypto = __importStar(require("crypto"));
50
+ /**
51
+ * Default tool-name convention: `<MCP>__<action>`. Matches the proxy's
52
+ * MCP gateway and the convention used by sdk-admin-agent.
53
+ *
54
+ * "Stripe__create_payment" -> { mcp: "Stripe", action: "create_payment" }
55
+ * "create_payment" -> uses defaultMcpName, else throws.
56
+ */
57
+ function defaultToolNameParser(defaultMcpName) {
58
+ return (toolName) => {
59
+ const idx = toolName.indexOf('__');
60
+ if (idx === -1) {
61
+ if (!defaultMcpName) {
62
+ throw new Error(`Tool "${toolName}" is not namespaced as <MCP>__<action> and no defaultMcpName was set on the session.`);
63
+ }
64
+ return { mcp: defaultMcpName, action: toolName };
65
+ }
66
+ const mcp = toolName.slice(0, idx);
67
+ const action = toolName.slice(idx + 2);
68
+ if (!mcp || !action) {
69
+ throw new Error(`Tool "${toolName}" has a malformed MCP prefix.`);
70
+ }
71
+ return { mcp, action };
72
+ };
73
+ }
74
+ function asToolCall(tc) {
75
+ return { name: tc.name, args: tc.args ?? {} };
76
+ }
77
+ /**
78
+ * Build an SDK-shaped plan dict from a flat list of tool calls.
79
+ */
80
+ function buildPlanFromToolCalls(toolCalls, goal, toolNameParser, defaultMcpName) {
81
+ const parser = toolNameParser ?? defaultToolNameParser(defaultMcpName);
82
+ const steps = toolCalls.map((tc) => {
83
+ const call = asToolCall(tc);
84
+ const { mcp, action } = parser(call.name);
85
+ return {
86
+ action,
87
+ tool: action,
88
+ mcp,
89
+ params: call.args ?? {},
90
+ description: `Call ${action} on ${mcp}`,
91
+ };
92
+ });
93
+ return { goal: goal ?? 'agent task', steps };
94
+ }
95
+ /**
96
+ * Stable hash over a tool-calls list — used by ArmorIQSession to skip
97
+ * re-minting when the LLM re-emits the same plan in the same turn.
98
+ *
99
+ * Uses JSON.stringify with no key sorting, matching the Python side's
100
+ * json.dumps(separators=(",",":")), so TS and PY produce matching digests.
101
+ */
102
+ function hashToolCalls(toolCalls) {
103
+ const canonicalList = toolCalls.map((tc) => ({
104
+ name: asToolCall(tc).name,
105
+ args: asToolCall(tc).args ?? {},
106
+ }));
107
+ const canonical = JSON.stringify(canonicalList);
108
+ return crypto.createHash('sha256').update(canonical, 'utf8').digest('hex');
109
+ }
110
+ //# sourceMappingURL=plan_builder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plan_builder.js","sourceRoot":"","sources":["../src/plan_builder.ts"],"names":[],"mappings":";AAAA;;;;;;;;;GASG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAcH,sDAkBC;AAsBD,wDAmBC;AASD,sCASC;AAzFD,+CAAiC;AAKjC;;;;;;GAMG;AACH,SAAgB,qBAAqB,CAAC,cAAuB;IAC3D,OAAO,CAAC,QAAgB,EAAE,EAAE;QAC1B,MAAM,GAAG,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACnC,IAAI,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC;YACf,IAAI,CAAC,cAAc,EAAE,CAAC;gBACpB,MAAM,IAAI,KAAK,CACb,SAAS,QAAQ,sFAAsF,CACxG,CAAC;YACJ,CAAC;YACD,OAAO,EAAE,GAAG,EAAE,cAAc,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;QACnD,CAAC;QACD,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QACnC,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;QACvC,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,SAAS,QAAQ,+BAA+B,CAAC,CAAC;QACpE,CAAC;QACD,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC;IACzB,CAAC,CAAC;AACJ,CAAC;AAED,SAAS,UAAU,CAAC,EAA+D;IACjF,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC;AAChD,CAAC;AAeD;;GAEG;AACH,SAAgB,sBAAsB,CACpC,SAA6E,EAC7E,IAAa,EACb,cAA+B,EAC/B,cAAuB;IAEvB,MAAM,MAAM,GAAG,cAAc,IAAI,qBAAqB,CAAC,cAAc,CAAC,CAAC;IACvE,MAAM,KAAK,GAAe,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE;QAC7C,MAAM,IAAI,GAAG,UAAU,CAAC,EAAE,CAAC,CAAC;QAC5B,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1C,OAAO;YACL,MAAM;YACN,IAAI,EAAE,MAAM;YACZ,GAAG;YACH,MAAM,EAAG,IAAI,CAAC,IAAgC,IAAI,EAAE;YACpD,WAAW,EAAE,QAAQ,MAAM,OAAO,GAAG,EAAE;SACxC,CAAC;IACJ,CAAC,CAAC,CAAC;IACH,OAAO,EAAE,IAAI,EAAE,IAAI,IAAI,YAAY,EAAE,KAAK,EAAE,CAAC;AAC/C,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,aAAa,CAC3B,SAA6E;IAE7E,MAAM,aAAa,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;QAC3C,IAAI,EAAE,UAAU,CAAC,EAAE,CAAC,CAAC,IAAI;QACzB,IAAI,EAAE,UAAU,CAAC,EAAE,CAAC,CAAC,IAAI,IAAI,EAAE;KAChC,CAAC,CAAC,CAAC;IACJ,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;IAChD,OAAO,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC7E,CAAC"}
@@ -0,0 +1,75 @@
1
+ /**
2
+ * ArmorIQSession — the core primitive for framework integrations.
3
+ *
4
+ * Mirrors armoriq_sdk/session.py. Two main usage shapes:
5
+ *
6
+ * 1. Observe mode (default, local) — MCP stays on the agent side:
7
+ * session.startPlan(toolCalls);
8
+ * const decision = session.enforce(toolName, toolArgs);
9
+ * // ... framework calls MCP directly ...
10
+ * await session.report(toolName, toolArgs, result);
11
+ *
12
+ * 2. Proxy mode — routes through the Armoriq proxy:
13
+ * session.startPlan(toolCalls);
14
+ * return session.dispatch(toolName, toolArgs);
15
+ */
16
+ import { ArmorIQClient } from './client';
17
+ import { IntentToken, ToolCall } from './models';
18
+ import { ToolNameParser } from './plan_builder';
19
+ export type SessionMode = 'local' | 'proxy' | 'sdk';
20
+ export interface SessionOptions {
21
+ toolNameParser?: ToolNameParser;
22
+ defaultMcpName?: string;
23
+ validitySeconds?: number;
24
+ llm?: string;
25
+ mode?: SessionMode;
26
+ }
27
+ export interface EnforceResult {
28
+ allowed: boolean;
29
+ action: 'allow' | 'block' | 'hold';
30
+ reason?: string;
31
+ delegationId?: string;
32
+ matchedPolicy?: string;
33
+ }
34
+ export interface ReportOptions {
35
+ status?: 'success' | 'failed' | 'error';
36
+ errorMessage?: string;
37
+ durationMs?: number;
38
+ isDelegated?: boolean;
39
+ delegatedBy?: string;
40
+ delegatedTo?: string;
41
+ }
42
+ type ToolCallInput = ToolCall | {
43
+ name: string;
44
+ args?: Record<string, unknown>;
45
+ };
46
+ export declare class ArmorIQSession {
47
+ userEmail?: string;
48
+ private client;
49
+ private toolNameParser;
50
+ private defaultMcpName?;
51
+ private validitySeconds;
52
+ private llm;
53
+ private mode;
54
+ private stepIndex;
55
+ private currentPlanHash?;
56
+ private currentToken?;
57
+ private mcpByAction;
58
+ private declaredTools;
59
+ constructor(client: ArmorIQClient, opts?: SessionOptions);
60
+ startPlan(toolCalls: ToolCallInput[], goal?: string): Promise<IntentToken>;
61
+ enforceLocal(toolName: string, toolArgs: Record<string, unknown>): EnforceResult;
62
+ enforceSdk(toolName: string, toolArgs: Record<string, unknown>, userEmail?: string): Promise<EnforceResult>;
63
+ enforce(toolName: string, toolArgs: Record<string, unknown>): Promise<EnforceResult>;
64
+ check(toolName: string, toolArgs: Record<string, unknown>, userEmail?: string): Promise<EnforceResult>;
65
+ report(toolName: string, toolArgs: Record<string, unknown>, result: unknown, opts?: ReportOptions): Promise<void>;
66
+ dispatch(toolName: string, toolArgs: Record<string, unknown>): Promise<unknown>;
67
+ private handleHold;
68
+ private static extractAmount;
69
+ private evaluateAmountThreshold;
70
+ reset(): void;
71
+ get currentTokenValue(): IntentToken | undefined;
72
+ get currentMode(): SessionMode;
73
+ }
74
+ export {};
75
+ //# sourceMappingURL=session.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"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"}