agentlock-shared 0.2.0 → 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 (169) hide show
  1. package/dist/__tests__/billing.test.d.ts +2 -0
  2. package/dist/__tests__/billing.test.d.ts.map +1 -0
  3. package/dist/__tests__/billing.test.js +31 -0
  4. package/dist/__tests__/billing.test.js.map +1 -0
  5. package/dist/__tests__/dns-pinning.test.d.ts +2 -0
  6. package/dist/__tests__/dns-pinning.test.d.ts.map +1 -0
  7. package/dist/__tests__/dns-pinning.test.js +33 -0
  8. package/dist/__tests__/dns-pinning.test.js.map +1 -0
  9. package/dist/__tests__/llm-classifier-cache-store.test.d.ts +2 -0
  10. package/dist/__tests__/llm-classifier-cache-store.test.d.ts.map +1 -0
  11. package/dist/__tests__/llm-classifier-cache-store.test.js +65 -0
  12. package/dist/__tests__/llm-classifier-cache-store.test.js.map +1 -0
  13. package/dist/__tests__/llm-classifier-cache.test.d.ts +2 -0
  14. package/dist/__tests__/llm-classifier-cache.test.d.ts.map +1 -0
  15. package/dist/__tests__/llm-classifier-cache.test.js +44 -0
  16. package/dist/__tests__/llm-classifier-cache.test.js.map +1 -0
  17. package/dist/__tests__/llm-classifier.test.d.ts +2 -0
  18. package/dist/__tests__/llm-classifier.test.d.ts.map +1 -0
  19. package/dist/__tests__/llm-classifier.test.js +167 -0
  20. package/dist/__tests__/llm-classifier.test.js.map +1 -0
  21. package/dist/__tests__/plans-classifier-limits.test.d.ts +2 -0
  22. package/dist/__tests__/plans-classifier-limits.test.d.ts.map +1 -0
  23. package/dist/__tests__/plans-classifier-limits.test.js +22 -0
  24. package/dist/__tests__/plans-classifier-limits.test.js.map +1 -0
  25. package/dist/__tests__/policy-category-floor.test.d.ts +2 -0
  26. package/dist/__tests__/policy-category-floor.test.d.ts.map +1 -0
  27. package/dist/__tests__/policy-category-floor.test.js +46 -0
  28. package/dist/__tests__/policy-category-floor.test.js.map +1 -0
  29. package/dist/__tests__/policy-claude-bash.test.d.ts +2 -0
  30. package/dist/__tests__/policy-claude-bash.test.d.ts.map +1 -0
  31. package/dist/__tests__/policy-claude-bash.test.js +401 -0
  32. package/dist/__tests__/policy-claude-bash.test.js.map +1 -0
  33. package/dist/__tests__/policy-llm-floor.test.d.ts +2 -0
  34. package/dist/__tests__/policy-llm-floor.test.d.ts.map +1 -0
  35. package/dist/__tests__/policy-llm-floor.test.js +107 -0
  36. package/dist/__tests__/policy-llm-floor.test.js.map +1 -0
  37. package/dist/__tests__/policy-ssh-e2e.test.d.ts +2 -0
  38. package/dist/__tests__/policy-ssh-e2e.test.d.ts.map +1 -0
  39. package/dist/__tests__/policy-ssh-e2e.test.js +89 -0
  40. package/dist/__tests__/policy-ssh-e2e.test.js.map +1 -0
  41. package/dist/__tests__/policy-ssh-sessions.test.d.ts +2 -0
  42. package/dist/__tests__/policy-ssh-sessions.test.d.ts.map +1 -0
  43. package/dist/__tests__/policy-ssh-sessions.test.js +139 -0
  44. package/dist/__tests__/policy-ssh-sessions.test.js.map +1 -0
  45. package/dist/__tests__/policy-ssh.test.d.ts +2 -0
  46. package/dist/__tests__/policy-ssh.test.d.ts.map +1 -0
  47. package/dist/__tests__/policy-ssh.test.js +180 -0
  48. package/dist/__tests__/policy-ssh.test.js.map +1 -0
  49. package/dist/__tests__/policy.test.js +400 -2
  50. package/dist/__tests__/policy.test.js.map +1 -1
  51. package/dist/__tests__/redact.test.js +76 -0
  52. package/dist/__tests__/redact.test.js.map +1 -1
  53. package/dist/__tests__/signing.test.js +89 -0
  54. package/dist/__tests__/signing.test.js.map +1 -1
  55. package/dist/__tests__/ssh-fingerprint.test.d.ts +2 -0
  56. package/dist/__tests__/ssh-fingerprint.test.d.ts.map +1 -0
  57. package/dist/__tests__/ssh-fingerprint.test.js +19 -0
  58. package/dist/__tests__/ssh-fingerprint.test.js.map +1 -0
  59. package/dist/__tests__/vpn-route.test.d.ts +2 -0
  60. package/dist/__tests__/vpn-route.test.d.ts.map +1 -0
  61. package/dist/__tests__/vpn-route.test.js +72 -0
  62. package/dist/__tests__/vpn-route.test.js.map +1 -0
  63. package/dist/__tests__/wireguard.test.d.ts +2 -0
  64. package/dist/__tests__/wireguard.test.d.ts.map +1 -0
  65. package/dist/__tests__/wireguard.test.js +114 -0
  66. package/dist/__tests__/wireguard.test.js.map +1 -0
  67. package/dist/billing.d.ts +12 -0
  68. package/dist/billing.d.ts.map +1 -0
  69. package/dist/billing.js +41 -0
  70. package/dist/billing.js.map +1 -0
  71. package/dist/crypto.d.ts +5 -0
  72. package/dist/crypto.d.ts.map +1 -1
  73. package/dist/crypto.js +80 -23
  74. package/dist/crypto.js.map +1 -1
  75. package/dist/dns-pinning.d.ts +28 -0
  76. package/dist/dns-pinning.d.ts.map +1 -0
  77. package/dist/dns-pinning.js +113 -0
  78. package/dist/dns-pinning.js.map +1 -0
  79. package/dist/index.d.ts +6 -0
  80. package/dist/index.d.ts.map +1 -1
  81. package/dist/index.js +9 -0
  82. package/dist/index.js.map +1 -1
  83. package/dist/llm-classifier-cache-store.d.ts +49 -0
  84. package/dist/llm-classifier-cache-store.d.ts.map +1 -0
  85. package/dist/llm-classifier-cache-store.js +63 -0
  86. package/dist/llm-classifier-cache-store.js.map +1 -0
  87. package/dist/llm-classifier-cache.d.ts +6 -0
  88. package/dist/llm-classifier-cache.d.ts.map +1 -0
  89. package/dist/llm-classifier-cache.js +52 -0
  90. package/dist/llm-classifier-cache.js.map +1 -0
  91. package/dist/llm-classifier.d.ts +29 -0
  92. package/dist/llm-classifier.d.ts.map +1 -0
  93. package/dist/llm-classifier.js +191 -0
  94. package/dist/llm-classifier.js.map +1 -0
  95. package/dist/observability.d.ts +36 -0
  96. package/dist/observability.d.ts.map +1 -0
  97. package/dist/observability.js +75 -0
  98. package/dist/observability.js.map +1 -0
  99. package/dist/plans.d.ts +17 -0
  100. package/dist/plans.d.ts.map +1 -1
  101. package/dist/plans.js +36 -14
  102. package/dist/plans.js.map +1 -1
  103. package/dist/policy.d.ts +173 -3
  104. package/dist/policy.d.ts.map +1 -1
  105. package/dist/policy.js +910 -42
  106. package/dist/policy.js.map +1 -1
  107. package/dist/redact.d.ts.map +1 -1
  108. package/dist/redact.js +83 -3
  109. package/dist/redact.js.map +1 -1
  110. package/dist/regex-safety.d.ts +21 -0
  111. package/dist/regex-safety.d.ts.map +1 -0
  112. package/dist/regex-safety.js +49 -0
  113. package/dist/regex-safety.js.map +1 -0
  114. package/dist/sanitize.d.ts +31 -0
  115. package/dist/sanitize.d.ts.map +1 -0
  116. package/dist/sanitize.js +54 -0
  117. package/dist/sanitize.js.map +1 -0
  118. package/dist/schemas.d.ts +202 -10
  119. package/dist/schemas.d.ts.map +1 -1
  120. package/dist/schemas.js +91 -1
  121. package/dist/schemas.js.map +1 -1
  122. package/dist/signing.d.ts +15 -0
  123. package/dist/signing.d.ts.map +1 -1
  124. package/dist/signing.js +53 -4
  125. package/dist/signing.js.map +1 -1
  126. package/dist/ssh-fingerprint.d.ts +10 -0
  127. package/dist/ssh-fingerprint.d.ts.map +1 -0
  128. package/dist/ssh-fingerprint.js +52 -0
  129. package/dist/ssh-fingerprint.js.map +1 -0
  130. package/dist/ssrf.d.ts +36 -0
  131. package/dist/ssrf.d.ts.map +1 -0
  132. package/dist/ssrf.js +140 -0
  133. package/dist/ssrf.js.map +1 -0
  134. package/dist/types.d.ts +130 -0
  135. package/dist/types.d.ts.map +1 -1
  136. package/dist/wireguard.d.ts +63 -0
  137. package/dist/wireguard.d.ts.map +1 -0
  138. package/dist/wireguard.js +226 -0
  139. package/dist/wireguard.js.map +1 -0
  140. package/package.json +42 -29
  141. package/.turbo/turbo-build.log +0 -4
  142. package/.turbo/turbo-test.log +0 -76
  143. package/dist/__tests__/content-crypto.test.d.ts +0 -2
  144. package/dist/__tests__/content-crypto.test.d.ts.map +0 -1
  145. package/dist/__tests__/content-crypto.test.js +0 -117
  146. package/dist/__tests__/content-crypto.test.js.map +0 -1
  147. package/dist/__tests__/signing.test (# Edit conflict 2026-04-01 z3etfmC #).js +0 -51
  148. package/dist/__tests__/signing.test.js (# Edit conflict 2026-04-01 4rndy9C #).map +0 -1
  149. package/dist/content-crypto.d.ts +0 -24
  150. package/dist/content-crypto.d.ts.map +0 -1
  151. package/dist/content-crypto.js +0 -58
  152. package/dist/content-crypto.js.map +0 -1
  153. package/src/__tests__/crypto.test.ts +0 -169
  154. package/src/__tests__/messaging.test.ts +0 -83
  155. package/src/__tests__/policy.test.ts +0 -222
  156. package/src/__tests__/redact.test.ts +0 -41
  157. package/src/__tests__/signing.test.ts +0 -55
  158. package/src/crypto.ts +0 -235
  159. package/src/index.ts +0 -8
  160. package/src/mcp-catalog.ts +0 -181
  161. package/src/plans.ts +0 -116
  162. package/src/policy.ts +0 -216
  163. package/src/redact.ts +0 -131
  164. package/src/schemas.ts +0 -121
  165. package/src/signing.ts +0 -120
  166. package/src/types.ts +0 -213
  167. package/test-gateway.mjs +0 -47
  168. package/tsconfig.json +0 -10
  169. package/vitest.config.ts +0 -8
package/src/types.ts DELETED
@@ -1,213 +0,0 @@
1
- export type WorkspaceRole = 'owner' | 'admin' | 'approver' | 'member';
2
- export type AgentStatus = 'active' | 'revoked' | 'suspended';
3
- export type AgentEnvironment = 'development' | 'staging' | 'production';
4
- export type ApprovalStatus = 'PENDING' | 'NEEDS_SECOND_APPROVAL' | 'APPROVED' | 'DENIED' | 'EXPIRED' | 'CANCELLED';
5
- export type ExecutionStatus = 'PENDING' | 'RUNNING' | 'SUCCEEDED' | 'FAILED' | 'UNDONE';
6
- export type ActionType = 'read' | 'write' | 'financial' | 'admin';
7
- export type PolicyDecision = 'ALLOW' | 'REQUIRE_APPROVAL' | 'BLOCK';
8
- export type RiskLevel = 'low' | 'medium' | 'high' | 'critical';
9
-
10
- export interface Workspace {
11
- id: string;
12
- name: string;
13
- slug: string;
14
- safe_mode: boolean;
15
- safe_mode_enabled_at?: string;
16
- safe_mode_enabled_by?: string;
17
- timeline_enabled: boolean;
18
- audit_log_enabled: boolean;
19
- retention_days?: number | null;
20
- created_at: string;
21
- updated_at: string;
22
- }
23
-
24
- export interface WorkspaceMember {
25
- id: string;
26
- workspace_id: string;
27
- user_id: string;
28
- role: WorkspaceRole;
29
- created_at: string;
30
- }
31
-
32
- export interface Agent {
33
- id: string;
34
- workspace_id: string;
35
- name: string;
36
- environment: AgentEnvironment;
37
- public_key: string;
38
- allowed_tools: string[];
39
- status: AgentStatus;
40
- created_by?: string;
41
- created_at: string;
42
- updated_at: string;
43
- last_seen_at?: string;
44
- }
45
-
46
- export interface ApiCredential {
47
- id: string;
48
- workspace_id: string;
49
- name: string;
50
- connector_type: string;
51
- last_four?: string;
52
- created_by?: string;
53
- created_at: string;
54
- updated_at: string;
55
- }
56
-
57
- export interface Policy {
58
- id: string;
59
- workspace_id: string;
60
- name: string;
61
- is_default: boolean;
62
- rules: PolicyRules;
63
- created_at: string;
64
- updated_at: string;
65
- }
66
-
67
- export interface PolicyRules {
68
- defaultMode: 'allow' | 'require_approval' | 'block';
69
- rules: PolicyRule[];
70
- http?: {
71
- allowedDomains: string[];
72
- allowedMethods: string[];
73
- blockList: string[];
74
- };
75
- limits?: {
76
- maxCostPerAction?: number;
77
- maxActionsPerHour?: number;
78
- };
79
- }
80
-
81
- export interface PolicyRule {
82
- action_type?: ActionType;
83
- tool?: string;
84
- domain?: string;
85
- decision: PolicyDecision;
86
- require_two_approvals?: boolean;
87
- allowed_approvers?: string[];
88
- }
89
-
90
- export interface PolicyEvaluationResult {
91
- decision: PolicyDecision;
92
- risk_level: RiskLevel;
93
- reason: string;
94
- matched_rule?: PolicyRule;
95
- }
96
-
97
- export interface ApprovalRequest {
98
- id: string;
99
- workspace_id: string;
100
- agent_id: string;
101
- status: ApprovalStatus;
102
- action_type: ActionType;
103
- tool: string;
104
- preview: ActionPreview;
105
- risk_level: RiskLevel;
106
- policy_decision: string;
107
- policy_reason?: string;
108
- expires_at: string;
109
- requires_two_approvals: boolean;
110
- approved_by?: string;
111
- denied_by?: string;
112
- decided_at?: string;
113
- second_approved_by?: string;
114
- second_decided_at?: string;
115
- request_hash: string;
116
- request_body: Record<string, unknown>;
117
- created_at: string;
118
- updated_at: string;
119
- }
120
-
121
- export interface ActionPreview {
122
- summary: string;
123
- target?: string;
124
- impact?: string;
125
- cost_estimate?: number;
126
- raw_action?: Record<string, unknown>;
127
- }
128
-
129
- export interface ActionExecution {
130
- id: string;
131
- workspace_id: string;
132
- approval_request_id?: string;
133
- agent_id: string;
134
- connector: string;
135
- action_type: ActionType;
136
- status: ExecutionStatus;
137
- sanitized_request: Record<string, unknown>;
138
- sanitized_response?: Record<string, unknown>;
139
- undo_supported: boolean;
140
- error_message?: string;
141
- executed_at?: string;
142
- completed_at?: string;
143
- undone_at?: string;
144
- created_at: string;
145
- updated_at: string;
146
- }
147
-
148
- export interface AuditEvent {
149
- id: string;
150
- workspace_id: string;
151
- event_type: string;
152
- actor_id?: string;
153
- actor_type: 'user' | 'agent' | 'system';
154
- agent_id?: string;
155
- resource_type?: string;
156
- resource_id?: string;
157
- metadata: Record<string, unknown>;
158
- created_at: string;
159
- }
160
-
161
- export type BrowserSessionStatus = 'active' | 'closed' | 'expired';
162
-
163
- export type BrowserTool =
164
- | 'browser.open'
165
- | 'browser.click'
166
- | 'browser.type'
167
- | 'browser.fill_credentials'
168
- | 'browser.navigate'
169
- | 'browser.snapshot'
170
- | 'browser.screenshot'
171
- | 'browser.press_key'
172
- | 'browser.select'
173
- | 'browser.scroll'
174
- | 'browser.close';
175
-
176
- export interface BrowserSession {
177
- id: string;
178
- workspace_id: string;
179
- agent_id: string;
180
- approval_request_id: string;
181
- status: BrowserSessionStatus;
182
- allowed_domains: string[];
183
- action_count: number;
184
- created_at: string;
185
- last_activity_at: string;
186
- expires_at: string;
187
- closed_at?: string;
188
- }
189
-
190
- export interface BrowserActionResult {
191
- session_id: string;
192
- snapshot: string;
193
- page_url: string;
194
- page_title: string;
195
- action_performed: string;
196
- screenshot?: string;
197
- }
198
-
199
- export interface AgentActionRequest {
200
- action_type: ActionType;
201
- tool: string;
202
- payload: Record<string, unknown>;
203
- idempotency_key?: string;
204
- cost_estimate?: number;
205
- }
206
-
207
- export interface GatewayRequestResult {
208
- request_id: string;
209
- decision: PolicyDecision;
210
- status: ApprovalStatus | 'ALLOWED' | 'BLOCKED';
211
- message?: string;
212
- expires_at?: string;
213
- }
package/test-gateway.mjs DELETED
@@ -1,47 +0,0 @@
1
- import nacl from 'tweetnacl';
2
- import pkg from 'tweetnacl-util';
3
- const { decodeBase64, encodeBase64 } = pkg;
4
- import crypto from 'crypto';
5
-
6
- const secretKey = decodeBase64('O+KzYs8CToO2ETYacgrK+TwD0YSGjx4DODo81TeePHG79vsP7ie1XABqCCg5Umicogb5F+qfy7424Vt4zRTTEg==');
7
- const agentId = '40745751-099a-43bf-a6be-7d1d7017027a';
8
-
9
- const body = {
10
- action_type: 'write',
11
- tool: 'demo',
12
- payload: { table: 'demo_items', operation: 'insert', data: { name: 'live-browser-test', ts: Date.now() } }
13
- };
14
-
15
- function canonicalStringify(obj) {
16
- if (obj === null || obj === undefined) return JSON.stringify(obj);
17
- if (typeof obj !== 'object') return JSON.stringify(obj);
18
- if (Array.isArray(obj)) return '[' + obj.map(canonicalStringify).join(',') + ']';
19
- const keys = Object.keys(obj).sort();
20
- return '{' + keys.map(k => JSON.stringify(k) + ':' + canonicalStringify(obj[k])).join(',') + '}';
21
- }
22
-
23
- const timestamp = Date.now().toString();
24
- const nonce = crypto.randomUUID();
25
- const message = canonicalStringify(body) + ':' + timestamp + ':' + nonce;
26
- const signature = encodeBase64(nacl.sign.detached(new TextEncoder().encode(message), secretKey));
27
-
28
- console.log('Sending request to gateway...');
29
- console.log('Agent:', agentId);
30
- console.log('Timestamp:', timestamp);
31
- console.log('Nonce:', nonce);
32
-
33
- const resp = await fetch('https://www.agentlock.net/api/gateway/request', {
34
- method: 'POST',
35
- headers: {
36
- 'Content-Type': 'application/json',
37
- 'x-agent-id': agentId,
38
- 'x-timestamp': timestamp,
39
- 'x-signature': signature,
40
- 'x-nonce': nonce,
41
- },
42
- body: JSON.stringify(body),
43
- });
44
-
45
- const result = await resp.json();
46
- console.log('Status:', resp.status);
47
- console.log('Response:', JSON.stringify(result, null, 2));
package/tsconfig.json DELETED
@@ -1,10 +0,0 @@
1
- {
2
- "extends": "../../tsconfig.base.json",
3
- "compilerOptions": {
4
- "outDir": "./dist",
5
- "rootDir": "./src",
6
- "lib": ["ES2022", "DOM"],
7
- "types": ["node"]
8
- },
9
- "include": ["src/**/*"]
10
- }
package/vitest.config.ts DELETED
@@ -1,8 +0,0 @@
1
- import { defineConfig } from 'vitest/config';
2
-
3
- export default defineConfig({
4
- test: {
5
- environment: 'node',
6
- include: ['src/**/*.test.ts'],
7
- },
8
- });