@scaniom/sdk 0.0.0-stage → 0.3.2
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/LICENSE +8 -0
- package/README.md +28 -2
- package/dist/index.d.ts +158 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +217 -0
- package/dist/index.js.map +1 -0
- package/package.json +44 -4
package/LICENSE
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
SCANIOM PROPRIETARY LICENSE NOTICE
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Scaniom. All rights reserved.
|
|
4
|
+
|
|
5
|
+
This source code and associated documentation are proprietary and confidential.
|
|
6
|
+
No permission is granted to copy, modify, distribute, sublicense, publish, or use
|
|
7
|
+
this software outside the owner-authorized Scaniom development and deployment
|
|
8
|
+
environments without prior written permission.
|
package/README.md
CHANGED
|
@@ -1,3 +1,29 @@
|
|
|
1
|
-
#
|
|
1
|
+
# @scaniom/sdk
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Scaniom L2 SDK. The SDK is an adapter into the same Scaniom Node, policy, Gate and evidence runtime used by L1 and L4.
|
|
4
|
+
|
|
5
|
+
```bash
|
|
6
|
+
npm install @scaniom/sdk
|
|
7
|
+
```
|
|
8
|
+
|
|
9
|
+
```ts
|
|
10
|
+
import { Scaniom } from "@scaniom/sdk";
|
|
11
|
+
|
|
12
|
+
const scaniom = new Scaniom({
|
|
13
|
+
nodeUrl: process.env.SCANIOM_NODE_URL!,
|
|
14
|
+
workloadId: process.env.SCANIOM_WORKLOAD_ID!,
|
|
15
|
+
runtimeToken: process.env.SCANIOM_RUNTIME_TOKEN,
|
|
16
|
+
});
|
|
17
|
+
|
|
18
|
+
const result = await scaniom.guardAction({
|
|
19
|
+
session: "session-123",
|
|
20
|
+
action: "tool_call",
|
|
21
|
+
target: "payments-api",
|
|
22
|
+
text: "proposed action",
|
|
23
|
+
execute: async () => performActualToolCall(),
|
|
24
|
+
});
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
The execution contract is `PRE-GUARD -> ALLOW/BLOCK -> execute -> POST-OBSERVE -> evidence`. Provider credentials do not belong in the SDK. A runtime token is carried when supplied; R16 Slice D does not claim L2 bearer enforcement until the Node guard/observe boundary explicitly enables it.
|
|
28
|
+
|
|
29
|
+
The package is dependency-free at runtime and requires Node 18.17 or newer.
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
export type MachineAction = "pass" | "observe" | "restrict" | "contain" | "deny" | "isolate";
|
|
2
|
+
export type ActionType = "model_request" | "agent_action" | "tool_call" | "delegation" | "memory_read" | "memory_write" | "network_request" | "file_access" | "code_execution" | "computer_control" | "custom_action";
|
|
3
|
+
export type Capability = "tool_use" | "external_network" | "file_access" | "credential_access" | "code_execution" | "computer_control" | "agent_delegation" | "persistent_memory" | "unknown_tool";
|
|
4
|
+
export type ResourceSensitivity = "public" | "internal" | "confidential" | "secret" | "regulated" | "critical";
|
|
5
|
+
export declare const SCANIOM_SDK_VERSION: "0.3.2";
|
|
6
|
+
export type ScaniomOptions = {
|
|
7
|
+
nodeUrl?: string;
|
|
8
|
+
environment?: string;
|
|
9
|
+
workload?: string;
|
|
10
|
+
workloadId?: string;
|
|
11
|
+
connectionId?: string;
|
|
12
|
+
nodeKey?: string;
|
|
13
|
+
runtimeToken?: string;
|
|
14
|
+
defaultSession?: string;
|
|
15
|
+
timeoutMs?: number;
|
|
16
|
+
};
|
|
17
|
+
export type GuardInput = {
|
|
18
|
+
session?: string;
|
|
19
|
+
provider?: string;
|
|
20
|
+
model?: string | null;
|
|
21
|
+
action: ActionType;
|
|
22
|
+
text?: string;
|
|
23
|
+
target?: string | null;
|
|
24
|
+
resourceSensitivity?: ResourceSensitivity | null;
|
|
25
|
+
capabilities?: Capability[];
|
|
26
|
+
tools?: string[];
|
|
27
|
+
production?: boolean;
|
|
28
|
+
metadata?: Record<string, unknown>;
|
|
29
|
+
};
|
|
30
|
+
export type GuardDecision = {
|
|
31
|
+
version: "scaniom-guard-decision-0.3.1";
|
|
32
|
+
behaviorEventId: string;
|
|
33
|
+
sessionId: string;
|
|
34
|
+
workloadId: string;
|
|
35
|
+
scaniomAddress: string;
|
|
36
|
+
actionType: ActionType;
|
|
37
|
+
machineAction: MachineAction;
|
|
38
|
+
permitted: boolean;
|
|
39
|
+
restricted: boolean;
|
|
40
|
+
riskScore: number;
|
|
41
|
+
severity: "minimal" | "low" | "moderate" | "high" | "critical";
|
|
42
|
+
reasons: string[];
|
|
43
|
+
signals: Array<{
|
|
44
|
+
id: string;
|
|
45
|
+
label: string;
|
|
46
|
+
score: number;
|
|
47
|
+
category: string;
|
|
48
|
+
}>;
|
|
49
|
+
policy: {
|
|
50
|
+
version: number;
|
|
51
|
+
mode: "monitor" | "enforce";
|
|
52
|
+
profile: string;
|
|
53
|
+
digest: string;
|
|
54
|
+
};
|
|
55
|
+
isolationUntil: string | null;
|
|
56
|
+
};
|
|
57
|
+
export declare class ScaniomError extends Error {
|
|
58
|
+
readonly status: number;
|
|
59
|
+
readonly body: unknown;
|
|
60
|
+
constructor(message: string, status: number, body: unknown);
|
|
61
|
+
}
|
|
62
|
+
export declare class ScaniomBlockedError extends ScaniomError {
|
|
63
|
+
readonly decision: GuardDecision;
|
|
64
|
+
constructor(decision: GuardDecision);
|
|
65
|
+
}
|
|
66
|
+
export type GuardedExecution<T> = {
|
|
67
|
+
decision: GuardDecision;
|
|
68
|
+
result: T;
|
|
69
|
+
};
|
|
70
|
+
export declare class Scaniom {
|
|
71
|
+
readonly nodeUrl: string;
|
|
72
|
+
readonly environment?: string;
|
|
73
|
+
readonly workload: string;
|
|
74
|
+
readonly connectionId?: string;
|
|
75
|
+
readonly nodeKey?: string;
|
|
76
|
+
readonly runtimeToken?: string;
|
|
77
|
+
readonly defaultSession?: string;
|
|
78
|
+
readonly timeoutMs: number;
|
|
79
|
+
constructor(options: ScaniomOptions);
|
|
80
|
+
private headers;
|
|
81
|
+
private request;
|
|
82
|
+
guard(input: GuardInput): Promise<GuardDecision>;
|
|
83
|
+
observe(input: GuardInput & {
|
|
84
|
+
outcome?: "success" | "error";
|
|
85
|
+
}): Promise<GuardDecision>;
|
|
86
|
+
guardAction<T>(input: GuardInput & {
|
|
87
|
+
execute: () => Promise<T> | T;
|
|
88
|
+
}): Promise<GuardedExecution<T>>;
|
|
89
|
+
guardTool<T>(input: {
|
|
90
|
+
session?: string;
|
|
91
|
+
tool: string;
|
|
92
|
+
input?: unknown;
|
|
93
|
+
target?: string;
|
|
94
|
+
capabilities?: Capability[];
|
|
95
|
+
resourceSensitivity?: ResourceSensitivity;
|
|
96
|
+
production?: boolean;
|
|
97
|
+
execute: () => Promise<T> | T;
|
|
98
|
+
}): Promise<GuardedExecution<T>>;
|
|
99
|
+
delegate<T>(input: {
|
|
100
|
+
session?: string;
|
|
101
|
+
agent: string;
|
|
102
|
+
task?: unknown;
|
|
103
|
+
production?: boolean;
|
|
104
|
+
execute: () => Promise<T> | T;
|
|
105
|
+
}): Promise<GuardedExecution<T>>;
|
|
106
|
+
guardMemory<T>(input: {
|
|
107
|
+
session?: string;
|
|
108
|
+
operation: "read" | "write";
|
|
109
|
+
key: string;
|
|
110
|
+
value?: unknown;
|
|
111
|
+
sensitivity?: ResourceSensitivity;
|
|
112
|
+
execute: () => Promise<T> | T;
|
|
113
|
+
}): Promise<GuardedExecution<T>>;
|
|
114
|
+
guardNetwork<T>(input: {
|
|
115
|
+
session?: string;
|
|
116
|
+
target: string;
|
|
117
|
+
request?: unknown;
|
|
118
|
+
production?: boolean;
|
|
119
|
+
execute: () => Promise<T> | T;
|
|
120
|
+
}): Promise<GuardedExecution<T>>;
|
|
121
|
+
guardCode<T>(input: {
|
|
122
|
+
session?: string;
|
|
123
|
+
language?: string;
|
|
124
|
+
code: string;
|
|
125
|
+
target?: string;
|
|
126
|
+
production?: boolean;
|
|
127
|
+
execute: () => Promise<T> | T;
|
|
128
|
+
}): Promise<GuardedExecution<T>>;
|
|
129
|
+
guardFile<T>(input: {
|
|
130
|
+
session?: string;
|
|
131
|
+
operation: "read" | "write";
|
|
132
|
+
path: string;
|
|
133
|
+
content?: unknown;
|
|
134
|
+
sensitivity?: ResourceSensitivity;
|
|
135
|
+
execute: () => Promise<T> | T;
|
|
136
|
+
}): Promise<GuardedExecution<T>>;
|
|
137
|
+
responsesRaw(body: Record<string, unknown>, options?: {
|
|
138
|
+
session?: string;
|
|
139
|
+
signal?: AbortSignal;
|
|
140
|
+
}): Promise<Response>;
|
|
141
|
+
responses<T = unknown>(body: Record<string, unknown>, options?: {
|
|
142
|
+
session?: string;
|
|
143
|
+
}): Promise<T>;
|
|
144
|
+
openAIClientConfig(apiKey?: string): {
|
|
145
|
+
apiKey: string;
|
|
146
|
+
baseURL: string;
|
|
147
|
+
defaultHeaders: Record<string, string>;
|
|
148
|
+
};
|
|
149
|
+
openai<TClient>(client: TClient): {
|
|
150
|
+
client: TClient;
|
|
151
|
+
responses: {
|
|
152
|
+
create: <T = unknown>(body: Record<string, unknown>, options?: {
|
|
153
|
+
session?: string;
|
|
154
|
+
}) => Promise<T>;
|
|
155
|
+
};
|
|
156
|
+
};
|
|
157
|
+
}
|
|
158
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,217 @@
|
|
|
1
|
+
export const SCANIOM_SDK_VERSION = "0.3.2";
|
|
2
|
+
export class ScaniomError extends Error {
|
|
3
|
+
status;
|
|
4
|
+
body;
|
|
5
|
+
constructor(message, status, body) {
|
|
6
|
+
super(message);
|
|
7
|
+
this.name = "ScaniomError";
|
|
8
|
+
this.status = status;
|
|
9
|
+
this.body = body;
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
export class ScaniomBlockedError extends ScaniomError {
|
|
13
|
+
decision;
|
|
14
|
+
constructor(decision) {
|
|
15
|
+
super(`Scaniom ${decision.machineAction.toUpperCase()} blocked ${decision.actionType} at risk ${decision.riskScore}`, 403, decision);
|
|
16
|
+
this.name = "ScaniomBlockedError";
|
|
17
|
+
this.decision = decision;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
function sessionId(value) {
|
|
21
|
+
if (value)
|
|
22
|
+
return value;
|
|
23
|
+
if (typeof crypto !== "undefined" && "randomUUID" in crypto)
|
|
24
|
+
return `scn-session-${crypto.randomUUID()}`;
|
|
25
|
+
return `scn-session-${Date.now()}-${Math.random().toString(16).slice(2)}`;
|
|
26
|
+
}
|
|
27
|
+
function textOf(value, limit = 100_000) {
|
|
28
|
+
if (typeof value === "string")
|
|
29
|
+
return value.slice(0, limit);
|
|
30
|
+
try {
|
|
31
|
+
return JSON.stringify(value).slice(0, limit);
|
|
32
|
+
}
|
|
33
|
+
catch {
|
|
34
|
+
return String(value).slice(0, limit);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
export class Scaniom {
|
|
38
|
+
nodeUrl;
|
|
39
|
+
environment;
|
|
40
|
+
workload;
|
|
41
|
+
connectionId;
|
|
42
|
+
nodeKey;
|
|
43
|
+
runtimeToken;
|
|
44
|
+
defaultSession;
|
|
45
|
+
timeoutMs;
|
|
46
|
+
constructor(options) {
|
|
47
|
+
const workload = options.workloadId || options.workload;
|
|
48
|
+
if (!workload)
|
|
49
|
+
throw new Error("Scaniom workloadId is required");
|
|
50
|
+
this.nodeUrl = (options.nodeUrl || "http://127.0.0.1:8787").replace(/\/$/, "");
|
|
51
|
+
this.environment = options.environment;
|
|
52
|
+
this.workload = workload;
|
|
53
|
+
this.connectionId = options.connectionId;
|
|
54
|
+
this.nodeKey = options.nodeKey;
|
|
55
|
+
this.runtimeToken = options.runtimeToken;
|
|
56
|
+
this.defaultSession = options.defaultSession;
|
|
57
|
+
this.timeoutMs = Math.max(250, Math.min(120_000, options.timeoutMs ?? 15_000));
|
|
58
|
+
}
|
|
59
|
+
headers(session) {
|
|
60
|
+
const headers = {
|
|
61
|
+
"content-type": "application/json",
|
|
62
|
+
"x-scaniom-workload-id": this.workload,
|
|
63
|
+
"x-scaniom-session-id": sessionId(session || this.defaultSession),
|
|
64
|
+
};
|
|
65
|
+
if (this.connectionId)
|
|
66
|
+
headers["x-scaniom-connection-id"] = this.connectionId;
|
|
67
|
+
if (this.nodeKey)
|
|
68
|
+
headers["x-scaniom-node-key"] = this.nodeKey;
|
|
69
|
+
if (this.runtimeToken)
|
|
70
|
+
headers.authorization = `Bearer ${this.runtimeToken}`;
|
|
71
|
+
if (this.runtimeToken)
|
|
72
|
+
headers.authorization = `Bearer ${this.runtimeToken}`;
|
|
73
|
+
return headers;
|
|
74
|
+
}
|
|
75
|
+
async request(path, body, session) {
|
|
76
|
+
const response = await fetch(`${this.nodeUrl}${path}`, {
|
|
77
|
+
method: "POST",
|
|
78
|
+
headers: this.headers(session),
|
|
79
|
+
body: JSON.stringify(body),
|
|
80
|
+
signal: AbortSignal.timeout(this.timeoutMs),
|
|
81
|
+
});
|
|
82
|
+
const payload = await response.json().catch(() => ({ error: response.statusText }));
|
|
83
|
+
if (!response.ok) {
|
|
84
|
+
const message = typeof payload === "object" && payload !== null && "error" in payload
|
|
85
|
+
? typeof payload.error === "string" ? String(payload.error) : response.statusText
|
|
86
|
+
: response.statusText;
|
|
87
|
+
throw new ScaniomError(message || `Scaniom Node ${response.status}`, response.status, payload);
|
|
88
|
+
}
|
|
89
|
+
return payload;
|
|
90
|
+
}
|
|
91
|
+
async guard(input) {
|
|
92
|
+
const session = sessionId(input.session || this.defaultSession);
|
|
93
|
+
return this.request("/v1/guard", {
|
|
94
|
+
version: "scaniom-guard-request-0.3.1",
|
|
95
|
+
workloadId: this.workload,
|
|
96
|
+
connectionId: this.connectionId,
|
|
97
|
+
sessionId: session,
|
|
98
|
+
provider: input.provider,
|
|
99
|
+
model: input.model,
|
|
100
|
+
actionType: input.action,
|
|
101
|
+
text: input.text,
|
|
102
|
+
target: input.target,
|
|
103
|
+
resourceSensitivity: input.resourceSensitivity,
|
|
104
|
+
capabilities: input.capabilities ?? [],
|
|
105
|
+
toolNames: input.tools ?? [],
|
|
106
|
+
production: input.production ?? false,
|
|
107
|
+
source: "sdk",
|
|
108
|
+
metadata: input.metadata ?? {},
|
|
109
|
+
}, session);
|
|
110
|
+
}
|
|
111
|
+
async observe(input) {
|
|
112
|
+
const session = sessionId(input.session || this.defaultSession);
|
|
113
|
+
return this.request("/v1/observe", {
|
|
114
|
+
version: "scaniom-guard-request-0.3.1",
|
|
115
|
+
workloadId: this.workload,
|
|
116
|
+
connectionId: this.connectionId,
|
|
117
|
+
sessionId: session,
|
|
118
|
+
provider: input.provider,
|
|
119
|
+
model: input.model,
|
|
120
|
+
actionType: input.action,
|
|
121
|
+
text: input.text,
|
|
122
|
+
target: input.target,
|
|
123
|
+
resourceSensitivity: input.resourceSensitivity,
|
|
124
|
+
capabilities: input.capabilities ?? [],
|
|
125
|
+
toolNames: input.tools ?? [],
|
|
126
|
+
production: input.production ?? false,
|
|
127
|
+
source: "sdk",
|
|
128
|
+
metadata: { ...(input.metadata ?? {}), outcome: input.outcome ?? "success" },
|
|
129
|
+
}, session);
|
|
130
|
+
}
|
|
131
|
+
async guardAction(input) {
|
|
132
|
+
const session = sessionId(input.session || this.defaultSession);
|
|
133
|
+
const decision = await this.guard({ ...input, session });
|
|
134
|
+
if (!decision.permitted)
|
|
135
|
+
throw new ScaniomBlockedError(decision);
|
|
136
|
+
try {
|
|
137
|
+
const result = await input.execute();
|
|
138
|
+
await this.observe({ ...input, session, outcome: "success", metadata: { ...(input.metadata ?? {}), preBehaviorEventId: decision.behaviorEventId } });
|
|
139
|
+
return { decision, result };
|
|
140
|
+
}
|
|
141
|
+
catch (error) {
|
|
142
|
+
await this.observe({ ...input, session, outcome: "error", metadata: { ...(input.metadata ?? {}), preBehaviorEventId: decision.behaviorEventId, errorType: error instanceof Error ? error.name : "unknown" } }).catch(() => undefined);
|
|
143
|
+
throw error;
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
async guardTool(input) {
|
|
147
|
+
return this.guardAction({
|
|
148
|
+
session: input.session,
|
|
149
|
+
action: "tool_call",
|
|
150
|
+
text: textOf(input.input),
|
|
151
|
+
target: input.target ?? input.tool,
|
|
152
|
+
tools: [input.tool],
|
|
153
|
+
capabilities: [...new Set(["tool_use", ...(input.capabilities ?? [])])],
|
|
154
|
+
resourceSensitivity: input.resourceSensitivity,
|
|
155
|
+
production: input.production,
|
|
156
|
+
execute: input.execute,
|
|
157
|
+
metadata: { tool: input.tool },
|
|
158
|
+
});
|
|
159
|
+
}
|
|
160
|
+
async delegate(input) {
|
|
161
|
+
return this.guardAction({
|
|
162
|
+
session: input.session,
|
|
163
|
+
action: "delegation",
|
|
164
|
+
text: textOf(input.task),
|
|
165
|
+
target: input.agent,
|
|
166
|
+
capabilities: ["agent_delegation"],
|
|
167
|
+
production: input.production,
|
|
168
|
+
execute: input.execute,
|
|
169
|
+
metadata: { delegatedAgent: input.agent },
|
|
170
|
+
});
|
|
171
|
+
}
|
|
172
|
+
async guardMemory(input) {
|
|
173
|
+
return this.guardAction({
|
|
174
|
+
session: input.session,
|
|
175
|
+
action: input.operation === "read" ? "memory_read" : "memory_write",
|
|
176
|
+
text: input.operation === "write" ? textOf(input.value) : "",
|
|
177
|
+
target: input.key,
|
|
178
|
+
resourceSensitivity: input.sensitivity,
|
|
179
|
+
capabilities: ["persistent_memory"],
|
|
180
|
+
execute: input.execute,
|
|
181
|
+
metadata: { memoryOperation: input.operation },
|
|
182
|
+
});
|
|
183
|
+
}
|
|
184
|
+
async guardNetwork(input) {
|
|
185
|
+
return this.guardAction({ session: input.session, action: "network_request", text: textOf(input.request), target: input.target, capabilities: ["external_network"], production: input.production, execute: input.execute, metadata: { networkTarget: input.target } });
|
|
186
|
+
}
|
|
187
|
+
async guardCode(input) {
|
|
188
|
+
return this.guardAction({ session: input.session, action: "code_execution", text: input.code, target: input.target ?? input.language ?? "code", capabilities: ["code_execution"], production: input.production, execute: input.execute, metadata: { language: input.language ?? null } });
|
|
189
|
+
}
|
|
190
|
+
async guardFile(input) {
|
|
191
|
+
return this.guardAction({ session: input.session, action: "file_access", text: input.operation === "write" ? textOf(input.content) : "", target: input.path, resourceSensitivity: input.sensitivity, capabilities: ["file_access"], execute: input.execute, metadata: { fileOperation: input.operation } });
|
|
192
|
+
}
|
|
193
|
+
async responsesRaw(body, options = {}) {
|
|
194
|
+
const session = sessionId(options.session || this.defaultSession);
|
|
195
|
+
const headers = this.headers(session);
|
|
196
|
+
return fetch(`${this.nodeUrl}/v1/sdk/responses`, { method: "POST", headers, body: JSON.stringify(body), signal: options.signal ?? AbortSignal.timeout(this.timeoutMs) });
|
|
197
|
+
}
|
|
198
|
+
async responses(body, options = {}) {
|
|
199
|
+
const response = await this.responsesRaw(body, options);
|
|
200
|
+
const payload = await response.json().catch(() => ({ error: response.statusText }));
|
|
201
|
+
if (!response.ok)
|
|
202
|
+
throw new ScaniomError(`Scaniom provider route ${response.status}`, response.status, payload);
|
|
203
|
+
return payload;
|
|
204
|
+
}
|
|
205
|
+
openAIClientConfig(apiKey = "scaniom-local") {
|
|
206
|
+
const defaultHeaders = { "x-scaniom-workload-id": this.workload };
|
|
207
|
+
if (this.connectionId)
|
|
208
|
+
defaultHeaders["x-scaniom-connection-id"] = this.connectionId;
|
|
209
|
+
if (this.nodeKey)
|
|
210
|
+
defaultHeaders["x-scaniom-node-key"] = this.nodeKey;
|
|
211
|
+
return { apiKey, baseURL: `${this.nodeUrl}/v1/sdk`, defaultHeaders };
|
|
212
|
+
}
|
|
213
|
+
openai(client) {
|
|
214
|
+
return { client, responses: { create: (body, options = {}) => this.responses(body, options) } };
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,46 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@scaniom/sdk",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"
|
|
5
|
-
"
|
|
6
|
-
|
|
3
|
+
"version": "0.3.2",
|
|
4
|
+
"description": "Scaniom L2 SDK for machine-speed AI behavior guard, observation and evidence through the Scaniom Node.",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "./dist/index.js",
|
|
7
|
+
"types": "./dist/index.d.ts",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": {
|
|
10
|
+
"types": "./dist/index.d.ts",
|
|
11
|
+
"import": "./dist/index.js"
|
|
12
|
+
}
|
|
13
|
+
},
|
|
14
|
+
"files": [
|
|
15
|
+
"dist",
|
|
16
|
+
"README.md",
|
|
17
|
+
"LICENSE"
|
|
18
|
+
],
|
|
19
|
+
"sideEffects": false,
|
|
20
|
+
"license": "UNLICENSED",
|
|
21
|
+
"engines": {
|
|
22
|
+
"node": ">=18.17"
|
|
23
|
+
},
|
|
24
|
+
"keywords": [
|
|
25
|
+
"scaniom",
|
|
26
|
+
"ai-safety",
|
|
27
|
+
"ai-security",
|
|
28
|
+
"agent-security",
|
|
29
|
+
"runtime",
|
|
30
|
+
"guardrails"
|
|
31
|
+
],
|
|
32
|
+
"scripts": {
|
|
33
|
+
"build": "tsc -p tsconfig.json",
|
|
34
|
+
"prepack": "npm run build"
|
|
35
|
+
},
|
|
36
|
+
"devDependencies": {
|
|
37
|
+
"typescript": "^5.8.3"
|
|
38
|
+
},
|
|
39
|
+
"publishConfig": {
|
|
40
|
+
"access": "public"
|
|
41
|
+
},
|
|
42
|
+
"repository": {
|
|
43
|
+
"type": "git",
|
|
44
|
+
"url": "https://github.com/faradeen-ja/scaniom.git"
|
|
45
|
+
}
|
|
46
|
+
}
|